repositories
/
cc1516.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' of github.com:dopefishh/cc1516
[cc1516.git]
/
lex.dcl
diff --git
a/lex.dcl
b/lex.dcl
index
a887374
..
f524047
100644
(file)
--- a/
lex.dcl
+++ b/
lex.dcl
@@
-1,13
+1,16
@@
definition module lex
from Data.Either import :: Either
definition module lex
from Data.Either import :: Either
+from yard import :: Error
+from AST import :: Pos
-:: Token :== (
Int
, TokenValue)
+:: Token :== (
Pos
, TokenValue)
:: TokenValue
//Value tokens
:: TokenValue
//Value tokens
- = IdentToken
[Char]
// Identifier
+ = IdentToken
String
// Identifier
| NumberToken Int // Integer
| CharToken Char // Character literal
| NumberToken Int // Integer
| CharToken Char // Character literal
+ | StringToken [Char]// String literal
//Keyword tokens
| VarToken // var keyword
| ReturnToken // return keyword
//Keyword tokens
| VarToken // var keyword
| ReturnToken // return keyword
@@
-20,6
+23,7
@@
from Data.Either import :: Either
| IntTypeToken // Int keyword
| CharTypeToken // Char keyword
| BoolTypeToken // Bool keyword
| IntTypeToken // Int keyword
| CharTypeToken // Char keyword
| BoolTypeToken // Bool keyword
+ | LetToken // Let keyword
//Two character tokens
| DoubleColonToken // ::
| NotEqualToken // !=
//Two character tokens
| DoubleColonToken // ::
| NotEqualToken // !=
@@
-29,6
+33,7
@@
from Data.Either import :: Either
| AmpersandsToken // &&
| PipesToken // ||
| ArrowToken // ->
| AmpersandsToken // &&
| PipesToken // ||
| ArrowToken // ->
+ | EmptyListToken // []
//One character tokens
| BraceOpenToken // (
| BraceCloseToken // )
//One character tokens
| BraceOpenToken // (
| BraceCloseToken // )
@@
-49,9
+54,8
@@
from Data.Either import :: Either
| LesserToken // <
| BiggerToken // >
| ExclamationToken // !
| LesserToken // <
| BiggerToken // >
| ExclamationToken // !
- //Special tokens
- | EndOfFileToken // EOF
+ | BackslashToken // \
-:: LexerOutput :== Either
String
[Token]
+:: LexerOutput :== Either
Error
[Token]
lexer :: [Char] -> LexerOutput
lexer :: [Char] -> LexerOutput