Clean up converted code
This commit is contained in:
		
							parent
							
								
									72f283c60a
								
							
						
					
					
						commit
						19d7284633
					
				@ -10,6 +10,8 @@ import util.Characters.BACKSLASH
 | 
				
			|||||||
import util.Characters.DOUBLE_QUOTE
 | 
					import util.Characters.DOUBLE_QUOTE
 | 
				
			||||||
import util.Characters.EOF
 | 
					import util.Characters.EOF
 | 
				
			||||||
import util.Characters.NEWLINE
 | 
					import util.Characters.NEWLINE
 | 
				
			||||||
 | 
					import util.Characters.isIdentifierCharacter
 | 
				
			||||||
 | 
					import util.Characters.isNumberPrefix
 | 
				
			||||||
import java.io.InputStream
 | 
					import java.io.InputStream
 | 
				
			||||||
import java.lang.Character.isDigit
 | 
					import java.lang.Character.isDigit
 | 
				
			||||||
import java.lang.Character.isWhitespace
 | 
					import java.lang.Character.isWhitespace
 | 
				
			||||||
@ -41,31 +43,23 @@ class LispScanner(inputStream: InputStream, fileName: String) {
 | 
				
			|||||||
            return tokenFactory.createEofToken(positionTracker.currentPosition())
 | 
					            return tokenFactory.createEofToken(positionTracker.currentPosition())
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun createTokenFromCharacter(c: Char): Token {
 | 
					    private fun createTokenFromCharacter(c: Char) = positionTracker.currentPosition().let { position ->
 | 
				
			||||||
        val currentPosition = positionTracker.currentPosition()
 | 
					        tokenFactory.createToken(retrieveTokenText(c), position)
 | 
				
			||||||
        val tokenText = retrieveTokenText(c)
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return tokenFactory.createToken(tokenText, currentPosition)
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun retrieveTokenText(firstCharacter: Char): String {
 | 
					    private fun retrieveTokenText(firstCharacter: Char): String {
 | 
				
			||||||
        var tokenText = "" + firstCharacter
 | 
					        var tokenText = "" + firstCharacter
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if (firstCharacter == DOUBLE_QUOTE)
 | 
					        when {
 | 
				
			||||||
            tokenText = retrieveStringTokenText(firstCharacter)
 | 
					            firstCharacter == DOUBLE_QUOTE        -> tokenText = retrieveStringTokenText(firstCharacter)
 | 
				
			||||||
        else if (Characters.isNumberPrefix(firstCharacter))
 | 
					            isNumberPrefix(firstCharacter)        -> tokenText = retrieveNumberOrIdentifierTokenText(firstCharacter)
 | 
				
			||||||
            tokenText = retrieveNumberOrIdentifierTokenText(firstCharacter)
 | 
					            firstCharacter.isDigit()              -> tokenText = retrieveNumberTokenText(firstCharacter)
 | 
				
			||||||
        else if (isDigit(firstCharacter))
 | 
					            isIdentifierCharacter(firstCharacter) -> tokenText = retrieveIdentifierTokenText(firstCharacter)
 | 
				
			||||||
            tokenText = retrieveNumberTokenText(firstCharacter)
 | 
					        }
 | 
				
			||||||
        else if (Characters.isLegalIdentifierCharacter(firstCharacter))
 | 
					 | 
				
			||||||
            tokenText = retrieveIdentifierTokenText(firstCharacter)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return tokenText
 | 
					        return tokenText
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun retrieveStringTokenText(firstDoubleQuote: Char) =
 | 
					 | 
				
			||||||
        ComplexTokenTextRetriever(firstDoubleQuote, { Characters.isLegalStringCharacter(it) }).retrieveToken()
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    private fun retrieveNumberOrIdentifierTokenText(firstCharacter: Char): String {
 | 
					    private fun retrieveNumberOrIdentifierTokenText(firstCharacter: Char): String {
 | 
				
			||||||
        val nextCharacter = inputStream.read().toChar()
 | 
					        val nextCharacter = inputStream.read().toChar()
 | 
				
			||||||
        inputStream.unreadLastCharacter()
 | 
					        inputStream.unreadLastCharacter()
 | 
				
			||||||
@ -76,11 +70,14 @@ class LispScanner(inputStream: InputStream, fileName: String) {
 | 
				
			|||||||
            retrieveIdentifierTokenText(firstCharacter)
 | 
					            retrieveIdentifierTokenText(firstCharacter)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private fun retrieveStringTokenText(firstDoubleQuote: Char) =
 | 
				
			||||||
 | 
					        ComplexTokenTextRetriever(firstDoubleQuote) { true }.retrieveToken()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun retrieveNumberTokenText(firstCharacter: Char) =
 | 
					    private fun retrieveNumberTokenText(firstCharacter: Char) =
 | 
				
			||||||
        ComplexTokenTextRetriever(firstCharacter, { Character.isDigit(it) }).retrieveToken()
 | 
					        ComplexTokenTextRetriever(firstCharacter, Character::isDigit).retrieveToken()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private fun retrieveIdentifierTokenText(firstCharacter: Char) =
 | 
					    private fun retrieveIdentifierTokenText(firstCharacter: Char) =
 | 
				
			||||||
        ComplexTokenTextRetriever(firstCharacter, { Characters.isLegalIdentifierCharacter(it) }).retrieveToken()
 | 
					        ComplexTokenTextRetriever(firstCharacter, Characters::isIdentifierCharacter).retrieveToken()
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private inner class ComplexTokenTextRetriever(internal var firstCharacter: Char,
 | 
					    private inner class ComplexTokenTextRetriever(internal var firstCharacter: Char,
 | 
				
			||||||
                                                  internal var isPartOfToken: (Char) -> Boolean) {
 | 
					                                                  internal var isPartOfToken: (Char) -> Boolean) {
 | 
				
			||||||
 | 
				
			|||||||
@ -10,7 +10,7 @@ import util.Characters.DOUBLE_QUOTE
 | 
				
			|||||||
import util.Characters.LEFT_PARENTHESIS
 | 
					import util.Characters.LEFT_PARENTHESIS
 | 
				
			||||||
import util.Characters.RIGHT_PARENTHESIS
 | 
					import util.Characters.RIGHT_PARENTHESIS
 | 
				
			||||||
import util.Characters.SINGLE_QUOTE
 | 
					import util.Characters.SINGLE_QUOTE
 | 
				
			||||||
import util.Characters.isLegalIdentifierCharacter
 | 
					import util.Characters.isIdentifierCharacter
 | 
				
			||||||
import util.Characters.isNumberPrefix
 | 
					import util.Characters.isNumberPrefix
 | 
				
			||||||
import java.lang.Character.isDigit
 | 
					import java.lang.Character.isDigit
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -31,9 +31,9 @@ class TokenFactoryImpl : TokenFactory {
 | 
				
			|||||||
            AT_SIGN           -> AtSign(text, position)
 | 
					            AT_SIGN           -> AtSign(text, position)
 | 
				
			||||||
            COMMA             -> Comma(text, position)
 | 
					            COMMA             -> Comma(text, position)
 | 
				
			||||||
            else              -> when {
 | 
					            else              -> when {
 | 
				
			||||||
                isNumeric(firstCharacter, text)            -> Number(text, position)
 | 
					                isNumeric(firstCharacter, text)       -> Number(text, position)
 | 
				
			||||||
                isLegalIdentifierCharacter(firstCharacter) -> Identifier(text, position)
 | 
					                isIdentifierCharacter(firstCharacter) -> Identifier(text, position)
 | 
				
			||||||
                else                                       -> throw BadCharacterException(text, position)
 | 
					                else                                  -> throw BadCharacterException(text, position)
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -42,7 +42,7 @@ object Characters {
 | 
				
			|||||||
        illegalIdentifierCharacters.add(SINGLE_QUOTE)
 | 
					        illegalIdentifierCharacters.add(SINGLE_QUOTE)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    fun isLegalIdentifierCharacter(c: Char) = !Character.isWhitespace(c) && !illegalIdentifierCharacters.contains(c)
 | 
					    fun isIdentifierCharacter(c: Char) = !Character.isWhitespace(c) && !illegalIdentifierCharacters.contains(c)
 | 
				
			||||||
    fun isLegalStringCharacter(c: Char) = true
 | 
					    fun isLegalStringCharacter(c: Char) = true
 | 
				
			||||||
    fun isNumberPrefix(c: Char) = c == DASH || c == PLUS
 | 
					    fun isNumberPrefix(c: Char) = c == DASH || c == PLUS
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user