summaryrefslogtreecommitdiff
path: root/backend/CMlexer.mll
diff options
context:
space:
mode:
authorGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-10-16 09:50:38 +0000
committerGravatar xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e>2013-10-16 09:50:38 +0000
commitc857f0b02463f4b0bc8100434eecdd46ce2ecbd1 (patch)
tree4496e88a95bac87525f6422274a8b5dafc4c356b /backend/CMlexer.mll
parent32b9fdc4332a6af5d108a0468399661867f4d2b4 (diff)
Cminor parsing and printing (from Andrew Tolmach)
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2345 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'backend/CMlexer.mll')
-rw-r--r--backend/CMlexer.mll39
1 files changed, 39 insertions, 0 deletions
diff --git a/backend/CMlexer.mll b/backend/CMlexer.mll
index 4083c95..c400c5e 100644
--- a/backend/CMlexer.mll
+++ b/backend/CMlexer.mll
@@ -37,13 +37,18 @@ rule token = parse
| "/*" { comment lexbuf; token lexbuf }
| "absf" { ABSF }
| "&" { AMPERSAND }
+ | "&l" { AMPERSANDL }
| "!" { BANG }
| "!=" { BANGEQUAL }
| "!=f" { BANGEQUALF }
+ | "!=l" { BANGEQUALL }
+ | "!=lu" { BANGEQUALLU }
| "!=u" { BANGEQUALU }
| "|" { BAR }
+ | "|l" { BARL }
| "builtin" { BUILTIN }
| "^" { CARET }
+ | "^l" { CARETL }
| "case" { CASE }
| ":" { COLON }
| "," { COMMA }
@@ -52,23 +57,34 @@ rule token = parse
| "=" { EQUAL }
| "==" { EQUALEQUAL }
| "==f" { EQUALEQUALF }
+ | "==l" { EQUALEQUALL }
+ | "==lu" { EQUALEQUALLU }
| "==u" { EQUALEQUALU }
| "exit" { EXIT }
| "extern" { EXTERN }
| "float" { FLOAT }
| "float32" { FLOAT32 }
| "float64" { FLOAT64 }
+ | "float64al32" { FLOAT64AL32 }
| "floatofint" { FLOATOFINT }
| "floatofintu" { FLOATOFINTU }
+ | "floatoflong" { FLOATOFLONG }
+ | "floatoflongu" { FLOATOFLONGU }
| "goto" { GOTO }
| ">" { GREATER }
| ">f" { GREATERF }
+ | ">l" { GREATERL }
+ | ">lu" { GREATERLU }
| ">u" { GREATERU }
| ">=" { GREATEREQUAL }
| ">=f" { GREATEREQUALF }
+ | ">=l" { GREATEREQUALL }
+ | ">=lu" { GREATEREQUALLU }
| ">=u" { GREATEREQUALU }
| ">>" { GREATERGREATER }
| ">>u" { GREATERGREATERU }
+ | ">>l" { GREATERGREATERL }
+ | ">>lu" { GREATERGREATERLU }
| "if" { IF }
| "in" { IN }
| "inline" { INLINE }
@@ -77,32 +93,48 @@ rule token = parse
| "int16s" { INT16S }
| "int16u" { INT16U }
| "int32" { INT32 }
+ | "int64" { INT64 }
| "int8" { INT8 }
| "int8s" { INT8S }
| "int8u" { INT8U }
| "intoffloat" { INTOFFLOAT }
| "intuoffloat" { INTUOFFLOAT }
+ | "intoflong" { INTOFLONG }
| "{" { LBRACE }
| "{{" { LBRACELBRACE }
| "[" { LBRACKET }
| "<" { LESS }
| "<u" { LESSU }
+ | "<l" { LESSL }
+ | "<lu" { LESSLU }
| "<f" { LESSF }
| "<=" { LESSEQUAL }
| "<=u" { LESSEQUALU }
| "<=f" { LESSEQUALF }
+ | "<=l" { LESSEQUALL }
+ | "<=lu" { LESSEQUALLU }
| "<<" { LESSLESS }
+ | "<<l" { LESSLESSL }
| "let" { LET }
+ | "long" { LONG }
+ | "longofint" { LONGOFINT }
+ | "longofintu" { LONGOFINTU }
+ | "longoffloat" { LONGOFFLOAT }
+ | "longuoffloat" { LONGUOFFLOAT }
| "loop" { LOOP }
| "(" { LPAREN }
| "match" { MATCH }
| "-" { MINUS }
| "->" { MINUSGREATER }
| "-f" { MINUSF }
+ | "-l" { MINUSL }
| "%" { PERCENT }
+ | "%l" { PERCENTL }
+ | "%lu" { PERCENTLU }
| "%u" { PERCENTU }
| "+" { PLUS }
| "+f" { PLUSF }
+ | "+l" { PLUSL }
| "}" { RBRACE }
| "}}" { RBRACERBRACE }
| "]" { RBRACKET }
@@ -112,18 +144,25 @@ rule token = parse
| ";" { SEMICOLON }
| "/" { SLASH }
| "/f" { SLASHF }
+ | "/l" { SLASHL }
+ | "/lu" { SLASHLU }
| "/u" { SLASHU }
+ | "single" { SINGLE }
| "stack" { STACK }
| "*" { STAR }
| "*f" { STARF }
+ | "*l" { STARL }
| "switch" { SWITCH }
| "tailcall" { TAILCALL }
| "~" { TILDE }
+ | "~l" { TILDEL }
| "var" { VAR }
| "void" { VOID }
| "volatile" { VOLATILE }
| "while" { WHILE }
+ | intlit"LL" { let s = Lexing.lexeme lexbuf in
+ LONGLIT(Int64.of_string(String.sub s 0 (String.length s - 2))) }
| intlit { INTLIT(Int32.of_string(Lexing.lexeme lexbuf)) }
| floatlit { FLOATLIT(float_of_string(Lexing.lexeme lexbuf)) }
| stringlit { let s = Lexing.lexeme lexbuf in