fix bad token function naming

This commit is contained in:
Oleg Sobolev 2025-12-25 18:48:12 +03:00
parent b5001499d7
commit 7bec9392c3
3 changed files with 13 additions and 13 deletions

View file

@ -16,7 +16,7 @@ interpret (Literal value) = return value
interpret (Grouping expr) = interpret expr
interpret (Unary op expr) = do
right <- interpret expr
case (getType op, right) of
case (tokenType op, right) of
(MINUS, NumberObject x) -> return $ NumberObject (-x)
(BANG, NullObject) -> return $ BoolObject False
(BANG, BoolObject x) -> return $ BoolObject (not x)
@ -25,7 +25,7 @@ interpret (Unary op expr) = do
interpret (Binary leftExpr op rightExpr) = do
left <- interpret leftExpr
right <- interpret rightExpr
case (getType op, left, right) of
case (tokenType op, left, right) of
(PLUS, NumberObject x, NumberObject y) -> return $ NumberObject (x + y)
(MINUS, NumberObject x, NumberObject y) -> return $ NumberObject (x - y)
(SLASH, NumberObject x, NumberObject y) -> return $ NumberObject (x / y)

View file

@ -55,12 +55,12 @@ unary = do
primary :: State ParserState Expr
primary = do
token <- advance
case getType token of
case tokenType token of
FALSE -> return $ Literal $ BoolObject False
TRUE -> return $ Literal $ BoolObject True
NIL -> return $ Literal NullObject
NUMBER -> return $ Literal $ getObject token
STRING -> return $ Literal $ getObject token
NUMBER -> return $ Literal $ tokenObject token
STRING -> return $ Literal $ tokenObject token
LEFT_PAREN -> do
expr <- expression
consume RIGHT_PAREN "Expected '(' after ')'"
@ -89,7 +89,7 @@ matchToken (t:ts) = do
check :: TokenType -> State ParserState Bool
check t = do
atEnd <- isAtEnd
if atEnd then return False else (== t) . getType <$> peek
if atEnd then return False else (== t) . tokenType <$> peek
consume :: TokenType -> String -> State ParserState Token
consume t msg = do
@ -103,4 +103,4 @@ peek :: State ParserState Token
peek = gets (head . tokens)
isAtEnd :: State ParserState Bool
isAtEnd = (== EOF) . getType <$> peek
isAtEnd = (== EOF) . tokenType <$> peek

View file

@ -1,7 +1,7 @@
module Lox.Scanner (
TokenType (..),
Object (..),
Token (getType, getLexeme, getObject),
Token (..),
scanTokensFromSource
) where
@ -36,10 +36,10 @@ instance Show Object where
show (BoolObject True) = "true"
data Token = Token {
getType :: TokenType,
getLexeme :: String,
getObject :: Object,
getLineNumber :: Int
tokenType :: TokenType,
tokenLexeme :: String,
tokenObject :: Object,
tokenLineNumber :: Int
} deriving Show
data ScannerState = ScannerState {source :: String, current :: String, lineNumber :: Int}
@ -169,7 +169,7 @@ addLiteralToken token object = state $ scannerAddLiteralToken token object
scannerAddLiteralToken :: TokenType -> Object -> ScannerState -> (Token, ScannerState)
scannerAddLiteralToken tokenType object state@ScannerState {current=current, lineNumber=lineNumber} =
(token, state)
where token = Token {getType=tokenType, getLexeme=current, getObject=object, getLineNumber=lineNumber}
where token = Token {tokenType=tokenType, tokenLexeme=current, tokenObject=object, tokenLineNumber=lineNumber}
getKeywordTokenType :: String -> TokenType
getKeywordTokenType "and" = AND