lexer implement identifiers
This commit is contained in:
parent
6d39110794
commit
b8e566a2a0
@ -11,11 +11,16 @@ testEmptyComment = TestCase $ assertEqual "scan '/*x*/'" emptyTokenList $ alex
|
|||||||
testLineComment = TestCase $ assertEqual "scan '// comment'" emptyTokenList $ alexScanTokens "// comment"
|
testLineComment = TestCase $ assertEqual "scan '// comment'" emptyTokenList $ alexScanTokens "// comment"
|
||||||
testLineCommentEnds = TestCase $ assertEqual "scan '// com\\n'" emptyTokenList $ alexScanTokens "// com\n"
|
testLineCommentEnds = TestCase $ assertEqual "scan '// com\\n'" emptyTokenList $ alexScanTokens "// com\n"
|
||||||
|
|
||||||
|
testIdentifier = TestCase $ assertEqual "scan 'identifier'" [Identifier "identifier"] $ alexScanTokens "identifier"
|
||||||
|
testShortIdentifier = TestCase $ assertEqual "scan 'i'" [Identifier "i"] $ alexScanTokens "i"
|
||||||
|
testIdentifierWithNumber = TestCase $ assertEqual "scan 'i2'" [Identifier "i2"] $ alexScanTokens "i2"
|
||||||
|
|
||||||
tests = TestList [
|
tests = TestList [
|
||||||
TestLabel "TestCommentSomething" testCommentSomething,
|
TestLabel "TestCommentSomething" testCommentSomething,
|
||||||
TestLabel "TestEmptyComment" testEmptyComment,
|
TestLabel "TestEmptyComment" testEmptyComment,
|
||||||
TestLabel "TestLineComment" testLineComment,
|
TestLabel "TestLineComment" testLineComment,
|
||||||
TestLabel "TestLineCommentEnds" testLineCommentEnds
|
TestLabel "TestLineCommentEnds" testLineCommentEnds,
|
||||||
|
TestLabel "TestIdentifier" testIdentifier,
|
||||||
|
TestLabel "TestShortIdentifier" testShortIdentifier,
|
||||||
|
TestLabel "TestIdentifierWithNumber" testIdentifierWithNumber
|
||||||
]
|
]
|
@ -7,17 +7,19 @@
|
|||||||
$digit = 0-9
|
$digit = 0-9
|
||||||
$alpha = [a-zA-Z]
|
$alpha = [a-zA-Z]
|
||||||
$alphanum = [a-zA-Z0-9]
|
$alphanum = [a-zA-Z0-9]
|
||||||
|
$JavaLetter = [A-Za-z\_\$]
|
||||||
|
$JavaLetterOrDigit = [A-Za-z\_\$0-9]
|
||||||
|
|
||||||
tokens :-
|
tokens :-
|
||||||
$white ;
|
$white ;
|
||||||
"/*"(.|\n)*"*/" ;
|
"/*"(.|\n)*"*/" ;
|
||||||
"//".* ;
|
"//".* ;
|
||||||
|
$JavaLetter$JavaLetterOrDigit* { \s -> Identifier s }
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
data Token
|
data Token
|
||||||
= Different
|
= Identifier String
|
||||||
deriving(Eq,Show)
|
deriving(Eq,Show)
|
||||||
|
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user