repositories
/
cc1516.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fixed mac envs
[cc1516.git]
/
lex.dcl
diff --git
a/lex.dcl
b/lex.dcl
index
7e41bc3
..
e78d495
100644
(file)
--- a/
lex.dcl
+++ b/
lex.dcl
@@
-1,11
+1,16
@@
definition module lex
definition module lex
-import Data.Either
+from Data.Either import :: Either
+from yard import :: Error
-:: Token
+:: Token = {
+ line :: Int,
+ column :: Int,
+ token :: TokenValue}
+:: TokenValue
//Value tokens
//Value tokens
- = IdentToken
[Char]
// Identifier
- | NumberToken
[Char]
// Integer
+ = IdentToken
String
// Identifier
+ | NumberToken
Int
// Integer
| CharToken Char // Character literal
//Keyword tokens
| VarToken // var keyword
| CharToken Char // Character literal
//Keyword tokens
| VarToken // var keyword
@@
-28,6
+33,7
@@
import Data.Either
| AmpersandsToken // &&
| PipesToken // ||
| ArrowToken // ->
| AmpersandsToken // &&
| PipesToken // ||
| ArrowToken // ->
+ | EmptyListToken // []
//One character tokens
| BraceOpenToken // (
| BraceCloseToken // )
//One character tokens
| BraceOpenToken // (
| BraceCloseToken // )
@@
-51,6
+57,6
@@
import Data.Either
//Special tokens
| EndOfFileToken // EOF
//Special tokens
| EndOfFileToken // EOF
-:: LexerOutput :== Either
String
[Token]
+:: LexerOutput :== Either
Error
[Token]
lexer :: [Char] -> LexerOutput
lexer :: [Char] -> LexerOutput