Create parsers for colon and ampersand tokens
This commit is contained in:
@@ -151,6 +151,8 @@ tokenizers = anyTokenizer
|
|||||||
data AST = OperatorNode VM.Op
|
data AST = OperatorNode VM.Op
|
||||||
| IntegerNode Int
|
| IntegerNode Int
|
||||||
| IdentifierNode String
|
| IdentifierNode String
|
||||||
|
| ColonNode
|
||||||
|
| AmpersandNode
|
||||||
deriving (Eq, Show)
|
deriving (Eq, Show)
|
||||||
|
|
||||||
type ConsumedTokens = Int
|
type ConsumedTokens = Int
|
||||||
@@ -170,6 +172,14 @@ parseIdentifier :: [Token] -> Maybe ParseResult
|
|||||||
parseIdentifier ((Identifier id):_) = Just $ ParseResult (IdentifierNode id) 1
|
parseIdentifier ((Identifier id):_) = Just $ ParseResult (IdentifierNode id) 1
|
||||||
parseIdentifier _ = Nothing
|
parseIdentifier _ = Nothing
|
||||||
|
|
||||||
|
parseColon :: [Token] -> Maybe ParseResult
|
||||||
|
parseColon ((Colon):_) = Just $ ParseResult ColonNode 1
|
||||||
|
parseColon _ = Nothing
|
||||||
|
|
||||||
|
parseAmpersand :: [Token] -> Maybe ParseResult
|
||||||
|
parseAmpersand ((Ampersand):_) = Just $ ParseResult AmpersandNode 1
|
||||||
|
parseAmpersand _ = Nothing
|
||||||
|
|
||||||
parseAny :: [Parser] -> Parser
|
parseAny :: [Parser] -> Parser
|
||||||
parseAny parsers tokens = Monoid.getFirst . Monoid.mconcat . map Monoid.First $ sequenceA parsers tokens
|
parseAny parsers tokens = Monoid.getFirst . Monoid.mconcat . map Monoid.First $ sequenceA parsers tokens
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user