diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-10-16 09:50:38 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-10-16 09:50:38 +0000 |
commit | c857f0b02463f4b0bc8100434eecdd46ce2ecbd1 (patch) | |
tree | 4496e88a95bac87525f6422274a8b5dafc4c356b /backend/CMlexer.mll | |
parent | 32b9fdc4332a6af5d108a0468399661867f4d2b4 (diff) | |
download | compcert-c857f0b02463f4b0bc8100434eecdd46ce2ecbd1.tar.gz compcert-c857f0b02463f4b0bc8100434eecdd46ce2ecbd1.zip |
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.mll | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/backend/CMlexer.mll b/backend/CMlexer.mll index 4083c956..c400c5ed 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 |