From 88732ef2a9fba248d07363bc29ed2fbce87ae595 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?L=C3=A9onard=20G=C3=A9rard?= Date: Tue, 29 Jun 2010 19:03:42 +0200 Subject: [PATCH] parsing warning removed. --- compiler/heptagon/parsing/hept_lexer.mll | 20 ------------ compiler/heptagon/parsing/hept_parser.mly | 18 +++-------- compiler/minils/parsing/mls_lexer.mll | 37 --------------------- compiler/minils/parsing/mls_parser.mly | 39 ++++------------------- 4 files changed, 12 insertions(+), 102 deletions(-) diff --git a/compiler/heptagon/parsing/hept_lexer.mll b/compiler/heptagon/parsing/hept_lexer.mll index cd77791..5b999c1 100644 --- a/compiler/heptagon/parsing/hept_lexer.mll +++ b/compiler/heptagon/parsing/hept_lexer.mll @@ -45,21 +45,17 @@ List.iter (fun (str,tok) -> Hashtbl.add keyword_table str tok) [ "state", STATE; "unless", UNLESS; "until", UNTIL; - "emit", EMIT; "last", LAST; "if", IF; "then", THEN; "else", ELSE; "default", DEFAULT; "continue", CONTINUE; - "case", CASE; "do", DO; "contract", CONTRACT; "assume", ASSUME; "enforce", ENFORCE; "with", WITH; - "inlined", INLINED; - "with", WITH; "map", MAP; "fold", FOLD; "mapfold", MAPFOLD; @@ -170,22 +166,6 @@ rule token = parse { INT (int_of_string(Lexing.lexeme lexbuf)) } | ['0'-'9']+ ('.' ['0'-'9']*)? (['e' 'E'] ['+' '-']? ['0'-'9']+)? { FLOAT (float_of_string(Lexing.lexeme lexbuf)) } - | "\"" - { reset_string_buffer(); - let string_start = lexbuf.lex_start_pos + lexbuf.lex_abs_pos in - begin try - string lexbuf - with Lexical_error(Unterminated_string, _, string_end) -> - raise(Lexical_error(Unterminated_string, string_start, string_end)) - end; - lexbuf.lex_start_pos <- string_start - lexbuf.lex_abs_pos; - STRING (get_stored_string()) } - | "'" [^ '\\' '\''] "'" - { CHAR(Lexing.lexeme_char lexbuf 1) } - | "'" '\\' ['\\' '\'' 'n' 't' 'b' 'r'] "'" - { CHAR(char_for_backslash (Lexing.lexeme_char lexbuf 2)) } - | "'" '\\' ['0'-'9'] ['0'-'9'] ['0'-'9'] "'" - { CHAR(char_for_decimal_code lexbuf 2) } | "(*@ " (['A'-'Z' 'a'-'z']('_' ? ['A'-'Z' 'a'-'z' ''' '0'-'9']) * as id) { reset_string_buffer(); diff --git a/compiler/heptagon/parsing/hept_parser.mly b/compiler/heptagon/parsing/hept_parser.mly index 2799d17..562502a 100644 --- a/compiler/heptagon/parsing/hept_parser.mly +++ b/compiler/heptagon/parsing/hept_parser.mly @@ -15,10 +15,8 @@ open Parsetree %token INT %token FLOAT %token BOOL -%token CHAR -%token STRING %token PRAGMA -%token TYPE FUN NODE RETURNS VAR VAL IN OPEN END CONST +%token TYPE FUN NODE RETURNS VAR VAL OPEN END CONST %token FBY PRE SWITCH WHEN EVERY %token OR STAR NOT %token AMPERSAND @@ -29,7 +27,6 @@ open Parsetree %token STATE %token UNLESS %token UNTIL -%token EMIT %token LAST %token IF %token THEN @@ -37,12 +34,10 @@ open Parsetree %token DEFAULT %token DO %token CONTINUE -%token CASE %token CONTRACT %token ASSUME %token ENFORCE %token WITH -%token INLINED %token POWER %token LBRACKET %token RBRACKET @@ -63,9 +58,8 @@ open Parsetree %left WITH %nonassoc prec_ident %nonassoc LBRACKET -%left IF ELSE +%left ELSE %right ARROW -%nonassoc EVERY %left OR %left AMPERSAND %left INFIX0 EQUAL @@ -77,8 +71,6 @@ open Parsetree %right prec_uminus %right FBY %right PRE -%right LAST -%right prec_apply %left POWER %right PREFIX %left DOT @@ -413,7 +405,7 @@ exp: { mk_exp (Eapp(mk_app Efby, [$1; $3])) } | PRE exp { mk_exp (Eapp(mk_app (Epre None), [$2])) } - | node_name LPAREN exps RPAREN %prec prec_apply + | node_name LPAREN exps RPAREN { mk_exp (mk_call $1 $3) } | NOT exp { mk_exp (mk_op_call "not" [] [$2]) } @@ -463,10 +455,10 @@ exp: | exp AROBASE exp { mk_exp (mk_array_op_call Econcat [$1; $3]) } /*Iterators*/ - | iterator longname DOUBLE_LESS simple_exp DOUBLE_GREATER LPAREN exps RPAREN %prec prec_apply + | iterator longname DOUBLE_LESS simple_exp DOUBLE_GREATER LPAREN exps RPAREN { mk_exp (mk_iterator_call $1 $2 [] ($4::$7)) } | iterator LPAREN longname DOUBLE_LESS array_exp_list DOUBLE_GREATER - RPAREN DOUBLE_LESS simple_exp DOUBLE_GREATER LPAREN exps RPAREN %prec prec_apply + RPAREN DOUBLE_LESS simple_exp DOUBLE_GREATER LPAREN exps RPAREN { mk_exp (mk_iterator_call $1 $3 $5 ($9::$12)) } /*Records operators */ | exp WITH DOT longname EQUAL exp diff --git a/compiler/minils/parsing/mls_lexer.mll b/compiler/minils/parsing/mls_lexer.mll index 3167f1b..6057d49 100644 --- a/compiler/minils/parsing/mls_lexer.mll +++ b/compiler/minils/parsing/mls_lexer.mll @@ -19,44 +19,23 @@ let keyword_table = ((Hashtbl.create 149) : (string, token) Hashtbl.t);; List.iter (fun (str,tok) -> Hashtbl.add keyword_table str tok) [ "node", NODE; - "fun", FUN; "returns", RETURNS; "var", VAR; "let", LET; "tel", TEL; "fby", FBY; - "switch", SWITCH; "when", WHEN; "type", TYPE; - "every", EVERY; "true", BOOL(true); "false", BOOL(false); "pre", PRE; "or", OR; "not", NOT; "open", OPEN; - "automaton", AUTOMATON; - "switch", SWITCH; - "present", PRESENT; "reset", RESET; - "state", STATE; - "unless", UNLESS; - "until", UNTIL; - "emit", EMIT; - "last", LAST; "if", IF; "then", THEN; "else", ELSE; - "default", DEFAULT; - "continue", CONTINUE; - "case", CASE; - "do", DO; - "contract", CONTRACT; - "assume", ASSUME; - "enforce", ENFORCE; - "with", WITH; - "inlined", INLINED; - "at", AT; "quo", INFIX3("quo"); "mod", INFIX3("mod"); "land", INFIX3("land"); @@ -155,22 +134,6 @@ rule token = parse { INT (int_of_string(Lexing.lexeme lexbuf)) } | '-'? ['0'-'9']+ ('.' ['0'-'9']*)? (['e' 'E'] ['+' '-']? ['0'-'9']+)? { FLOAT (float_of_string(Lexing.lexeme lexbuf)) } - | "\"" - { reset_string_buffer(); - let string_start = lexbuf.lex_start_pos + lexbuf.lex_abs_pos in - begin try - string lexbuf - with Lexical_error(Unterminated_string, _, string_end) -> - raise(Lexical_error(Unterminated_string, string_start, string_end)) - end; - lexbuf.lex_start_pos <- string_start - lexbuf.lex_abs_pos; - STRING (get_stored_string()) } - | "'" [^ '\\' '\''] "'" - { CHAR(Lexing.lexeme_char lexbuf 1) } - | "'" '\\' ['\\' '\'' 'n' 't' 'b' 'r'] "'" - { CHAR(char_for_backslash (Lexing.lexeme_char lexbuf 2)) } - | "'" '\\' ['0'-'9'] ['0'-'9'] ['0'-'9'] "'" - { CHAR(char_for_decimal_code lexbuf 2) } | "(*@ " (['A'-'Z' 'a'-'z']('_' ? ['A'-'Z' 'a'-'z' ''' '0'-'9']) * as id) { reset_string_buffer(); diff --git a/compiler/minils/parsing/mls_parser.mly b/compiler/minils/parsing/mls_parser.mly index ffe6fe7..498b9da 100644 --- a/compiler/minils/parsing/mls_parser.mly +++ b/compiler/minils/parsing/mls_parser.mly @@ -25,35 +25,16 @@ let mk_var name ty = mk_var_dec name ty %token INT %token FLOAT %token BOOL -%token CHAR -%token STRING %token PRAGMA -%token TYPE FUN NODE RETURNS VAR OPEN -%token FBY PRE SWITCH WHEN EVERY +%token TYPE NODE RETURNS VAR OPEN +%token FBY PRE WHEN %token OR STAR NOT %token AMPERSAND %token AMPERAMPER -%token AUTOMATON -%token PRESENT %token RESET -%token STATE -%token UNLESS -%token UNTIL -%token EMIT -%token LAST %token IF %token THEN %token ELSE -%token DEFAULT -%token DO -%token CONTINUE -%token CASE -%token CONTRACT -%token ASSUME -%token ENFORCE -%token WITH -%token INLINED -%token AT %token DOUBLE_LESS DOUBLE_GREATER %token PREFIX %token INFIX0 @@ -65,23 +46,17 @@ let mk_var name ty = mk_var_dec name ty %token EOF -%nonassoc prec_ident -%left IF ELSE -%right ARROW -%nonassoc EVERY +%left ELSE + %left OR %left AMPERSAND %left INFIX0 EQUAL %right INFIX1 EQUALEQUAL BARBAR AMPERAMPER -%left INFIX2 SUBTRACTIVE +%left INFIX2 prefixs %left STAR INFIX3 %left INFIX4 -%right prefixs %right FBY %right PRE -%right LAST -%right prec_apply -%left DOT @@ -164,7 +139,7 @@ equs: LET e=slist(SEMICOL, equ) TEL { e } equ: p=pat EQUAL e=exp { mk_equation p e } pat: - | n=NAME {Evarpat (ident_of_name n)} + | n=NAME {Evarpat (ident_of_name n)} | LPAREN p=snlist(COMMA, pat) RPAREN {Etuplepat p} longname: l=qualified(name) {l} @@ -199,7 +174,7 @@ exp: | p_op=prefix e=exp %prec prefixs { mk_exp (Ecall(mk_op ~op_kind:Eop p_op, [e], None)) } | IF e1=exp THEN e2=exp ELSE e3=exp { mk_exp (Eifthenelse(e1, e2, e3)) } - | e=simple_exp DOT m=longname { mk_exp (Efield(e, m)) } + | e=simple_exp DOT m=longname { mk_exp (Efield(e, m)) }