Commit 169bd9ac authored by POTTIER Francois's avatar POTTIER Francois

Add a bunch of new tests, taken from opam.

parent 91aeec43
Grammar has 44 nonterminal symbols, among which 4 start symbols.
Grammar has 82 terminal symbols.
Grammar has 188 productions.
nullable(variable_declaration) = false
nullable(variable) = false
nullable(value_list) = false
nullable(token_expr) = true
nullable(sum_token) = false
nullable(start_rule) = false
nullable(standalone_effect_list) = false
nullable(standalone_bool_expr) = false
nullable(small_bool_expr) = false
nullable(small_alg_expr) = false
nullable(rule_expression) = false
nullable(rule_content) = false
nullable(rate) = true
nullable(print_expr) = true
nullable(port_expression) = false
nullable(perturbation_post) = true
nullable(perturbation_declaration) = false
nullable(perturbation_alarm) = true
nullable(pattern) = false
nullable(nonempty_print_expr) = false
nullable(non_empty_mixture) = false
nullable(newline) = false
nullable(nbr) = false
nullable(mod_agent) = true
nullable(mid_alg_expr) = false
nullable(link_state_mod) = true
nullable(link_state) = false
nullable(internal_state) = true
nullable(interface_expression) = true
nullable(interactive_command) = false
nullable(instruction) = false
nullable(init_declaration) = false
nullable(effect_list) = false
nullable(effect) = false
nullable(counter_test) = false
nullable(constant) = false
nullable(boolean) = false
nullable(bool_expr) = false
nullable(birate) = false
nullable(arrow) = false
nullable(alg_with_radius) = false
nullable(alg_expr) = false
nullable(agent_expression) = false
nullable(a_link_state) = false
first(variable_declaration) = LABEL ID
first(variable) = TIME PIPE NULL_EVENT LABEL ID EVENT
first(value_list) = STRING
first(token_expr) = PIPE
first(sum_token) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(start_rule) = error TOKEN SIGNATURE PLUS PLOT PIPE PERT OP_PAR OBS NEWLINE MINUS LET LABEL KAPPA_RAR KAPPA_LRAR INIT ID EOF CONFIG
first(standalone_effect_list) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY OP_PAR INTRO ID FLUX DELETE ASSIGN APPLY
first(standalone_bool_expr) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(small_bool_expr) = TRUE OP_PAR FALSE
first(small_alg_expr) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(rule_expression) = PLUS PIPE OP_PAR MINUS KAPPA_RAR KAPPA_LRAR ID
first(rule_content) = PLUS PIPE OP_PAR MINUS KAPPA_RAR KAPPA_LRAR ID
first(rate) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR OP_CUR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(print_expr) = TMAX TIME TAN STRING SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(port_expression) = ID
first(perturbation_post) = UNTIL REPEAT
first(perturbation_declaration) = TRUE TMAX TIME TAN SQRT SINUS REPEAT PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX DO CPUTIME COSINUS ALARM ABS
first(perturbation_alarm) = ALARM
first(pattern) = PLUS OP_PAR MINUS ID
first(nonempty_print_expr) = TMAX TIME TAN STRING SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(non_empty_mixture) = ID
first(newline) = NEWLINE EOF
first(nbr) = INT INFINITY FLOAT
first(mod_agent) = PLUS MINUS
first(mid_alg_expr) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(link_state_mod) = DIV
first(link_state) = KAPPA_WLD KAPPA_LNK
first(internal_state) = error KAPPA_MRK
first(interface_expression) = ID
first(interactive_command) = error TRACK STOP SPECIES_OF SNAPSHOT RUN PRINTF PLOTENTRY OP_PAR INTRO ID FLUX EOF DELETE ASSIGN APPLY
first(instruction) = TOKEN SIGNATURE PLOT PERT OBS LET INIT CONFIG
first(init_declaration) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(effect_list) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY OP_PAR INTRO ID FLUX DELETE ASSIGN APPLY
first(effect) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY INTRO ID FLUX DELETE ASSIGN APPLY
first(counter_test) = TYPE
first(constant) = TMAX INT INFINITY FLOAT EMAX CPUTIME
first(boolean) = TRUE FALSE
first(bool_expr) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(birate) = error AT
first(arrow) = KAPPA_RAR KAPPA_LRAR
first(alg_with_radius) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(agent_expression) = PLUS MINUS ID
first(a_link_state) = KAPPA_WLD KAPPA_LNK
minimal(variable_declaration) = (* 2 *) LABEL INFINITY
minimal(variable) = (* 1 *) ID
minimal(value_list) = (* 1 *) STRING
minimal(token_expr) = (* 0 *)
minimal(sum_token) = (* 2 *) INFINITY ID
minimal(start_rule) = (* 1 *) EOF
minimal(standalone_effect_list) = (* 2 *) SNAPSHOT EOF
minimal(standalone_bool_expr) = (* 2 *) TRUE EOF
minimal(small_bool_expr) = (* 1 *) TRUE
minimal(small_alg_expr) = (* 1 *) INFINITY
minimal(rule_expression) = (* 2 *) KAPPA_RAR AT
minimal(rule_content) = (* 1 *) KAPPA_RAR
minimal(rate) = (* 0 *)
minimal(print_expr) = (* 0 *)
minimal(port_expression) = (* 1 *) ID
minimal(perturbation_post) = (* 0 *)
minimal(perturbation_declaration) = (* 2 *) DO SNAPSHOT
minimal(perturbation_alarm) = (* 0 *)
minimal(pattern) = (* 2 *) ID error
minimal(nonempty_print_expr) = (* 1 *) STRING
minimal(non_empty_mixture) = (* 3 *) ID OP_PAR CL_PAR
minimal(newline) = (* 1 *) EOF
minimal(nbr) = (* 1 *) INFINITY
minimal(mod_agent) = (* 0 *)
minimal(mid_alg_expr) = (* 1 *) INFINITY
minimal(link_state_mod) = (* 0 *)
minimal(link_state) = (* 1 *) KAPPA_WLD
minimal(internal_state) = (* 0 *)
minimal(interface_expression) = (* 0 *)
minimal(interactive_command) = (* 1 *) EOF
minimal(instruction) = (* 2 *) TOKEN ID
minimal(init_declaration) = (* 2 *) INFINITY ID
minimal(effect_list) = (* 1 *) SNAPSHOT
minimal(effect) = (* 1 *) SNAPSHOT
minimal(counter_test) = (* 2 *) TYPE INT
minimal(constant) = (* 1 *) INFINITY
minimal(boolean) = (* 1 *) TRUE
minimal(bool_expr) = (* 1 *) TRUE
minimal(birate) = (* 1 *) AT
minimal(arrow) = (* 1 *) KAPPA_RAR
minimal(alg_with_radius) = (* 1 *) INFINITY
minimal(alg_expr) = (* 1 *) INFINITY
minimal(agent_expression) = (* 2 *) ID error
minimal(a_link_state) = (* 1 *) KAPPA_WLD
follow(variable_declaration) = NEWLINE EOF
follow(variable) = UNTIL TYPE TRUE TMAX TIME THEN TAN STRING SQRT SMALLER SINUS SET SEMICOLON REPEAT POW PLUS PIPE OR OP_PAR OP_CUR NULL_EVENT NEWLINE MULT MODULO MINUS MIN MAX LOG LABEL KAPPA_RAR KAPPA_LRAR INT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS COMMA CL_PAR CL_CUR AND ABS
follow(value_list) = NEWLINE EOF
follow(token_expr) = error UNTIL SEMICOLON REPEAT NEWLINE KAPPA_RAR KAPPA_LRAR EOF CL_PAR AT
follow(sum_token) = error UNTIL SEMICOLON REPEAT NEWLINE KAPPA_RAR KAPPA_LRAR EOF CL_PAR AT
follow(start_rule) = #
follow(standalone_effect_list) = #
follow(standalone_bool_expr) = #
follow(small_bool_expr) = THEN SET OR NEWLINE EOF DO CL_PAR AND
follow(small_alg_expr) = UNTIL TYPE TRUE TMAX TIME THEN TAN STRING SQRT SMALLER SINUS SET SEMICOLON REPEAT POW PLUS PIPE OR OP_PAR OP_CUR NULL_EVENT NEWLINE MULT MODULO MINUS MIN MAX LOG LABEL KAPPA_RAR KAPPA_LRAR INT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS COMMA CL_PAR CL_CUR AND ABS
follow(rule_expression) = NEWLINE EOF
follow(rule_content) = error UNTIL SEMICOLON REPEAT NEWLINE EOF CL_PAR AT
follow(rate) = NEWLINE EOF COMMA
follow(print_expr) = UNTIL SMALLER SEMICOLON REPEAT NEWLINE GREATER EOF CL_PAR
follow(port_expression) = COMMA CL_PAR
follow(perturbation_post) = NEWLINE EOF
follow(perturbation_declaration) = NEWLINE EOF
follow(perturbation_alarm) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX DO CPUTIME COSINUS ABS
follow(pattern) = error UNTIL TRUE SEMICOLON REPEAT PIPE NEWLINE KAPPA_RAR KAPPA_LRAR FALSE EOF CL_PAR AT
follow(nonempty_print_expr) = UNTIL TRUE STRING SMALLER SEMICOLON REPEAT NEWLINE ID GREATER FALSE EOF CL_PAR
follow(non_empty_mixture) = UNTIL TRUE SEMICOLON REPEAT PIPE NEWLINE FALSE EOF CL_PAR
follow(newline) = #
follow(nbr) = UNTIL TYPE TRUE TMAX TIME THEN TAN STRING SQRT SMALLER SINUS SET SEMICOLON REPEAT POW PLUS PIPE OR OP_PAR OP_CUR NULL_EVENT NOT NEWLINE MULT MODULO MINUS MIN MAX LOG LABEL KAPPA_RAR KAPPA_LRAR INT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS COMMA CL_PAR CL_CUR AND ABS
follow(mod_agent) = ID
follow(mid_alg_expr) = UNTIL TYPE TRUE TMAX TIME THEN TAN STRING SQRT SMALLER SINUS SET SEMICOLON REPEAT POW PLUS PIPE OR OP_PAR OP_CUR NULL_EVENT NEWLINE MULT MODULO MINUS MIN MAX LOG LABEL KAPPA_RAR KAPPA_LRAR INT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS COMMA CL_PAR CL_CUR AND ABS
follow(link_state_mod) = COMMA CL_PAR
follow(link_state) = DIV COMMA CL_PAR
follow(internal_state) = KAPPA_WLD KAPPA_LNK DIV COMMA CL_PAR
follow(interface_expression) = CL_PAR
follow(interactive_command) = #
follow(instruction) = NEWLINE EOF
follow(init_declaration) = NEWLINE EOF
follow(effect_list) = UNTIL REPEAT NEWLINE EOF CL_PAR
follow(effect) = UNTIL SEMICOLON REPEAT NEWLINE EOF CL_PAR
follow(counter_test) = PLUS COMMA CL_PAR
follow(constant) = UNTIL TYPE TRUE TMAX TIME THEN TAN STRING SQRT SMALLER SINUS SET SEMICOLON REPEAT POW PLUS PIPE OR OP_PAR OP_CUR NULL_EVENT NEWLINE MULT MODULO MINUS MIN MAX LOG LABEL KAPPA_RAR KAPPA_LRAR INT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS COMMA CL_PAR CL_CUR AND ABS
follow(boolean) = UNTIL SEMICOLON REPEAT NEWLINE EOF CL_PAR
follow(bool_expr) = THEN SET OR NEWLINE EOF DO CL_PAR AND
follow(birate) = NEWLINE EOF
follow(arrow) = error UNTIL SEMICOLON REPEAT PLUS PIPE OP_PAR NEWLINE MINUS ID EOF CL_PAR AT
follow(alg_with_radius) = CL_PAR CL_CUR
follow(alg_expr) = UNTIL TYPE THEN SMALLER SET SEMICOLON REPEAT OR OP_PAR OP_CUR NEWLINE ID GREATER EQUAL EOF ELSE DO DIFF COMMA CL_PAR CL_CUR AND
follow(agent_expression) = error UNTIL TRUE SEMICOLON REPEAT PIPE NEWLINE KAPPA_RAR KAPPA_LRAR FALSE EOF COMMA CL_PAR AT
follow(a_link_state) = KAPPA_WLD KAPPA_LNK DIV COMMA CL_PAR
Built an LR(0) automaton with 357 states.
The grammar is not SLR(1) -- 20 states have a conflict.
Built an LR(1) automaton with 400 states.
90 shift/reduce conflicts were silently solved.
156 out of 400 states have a default reduction.
163 out of 400 states are represented.
0 out of 132 symbols keep track of their start position.
0 out of 132 symbols keep track of their end position.
103 out of 192 productions exploit shiftreduce optimization.
24 out of 400 states can peek at an error.
1045 functions before inlining, 195 functions after inlining.
This diff is collapsed.
This diff is collapsed.
Grammar has 58 nonterminal symbols, among which 4 start symbols.
Grammar has 81 terminal symbols.
Grammar has 209 productions.
nullable(variable_declaration) = false
nullable(variable) = false
nullable(value_list) = false
nullable(sum_token) = false
nullable(standalone_effect_list) = false
nullable(standalone_bool_expr) = false
nullable(small_bool_expr) = false
nullable(small_alg_expr) = false
nullable(site_link) = false
nullable(site_internal) = false
nullable(site_counter) = false
nullable(site) = false
nullable(sentence) = false
nullable(rule_side) = false
nullable(rule_content) = false
nullable(rule) = false
nullable(rate) = false
nullable(print_expr_list) = false
nullable(print_expr) = true
nullable(perturbation_post) = true
nullable(perturbation_declaration) = false
nullable(perturbation_alarm) = true
nullable(pattern) = false
nullable(partial_effect_list) = false
nullable(nonempty_print_expr) = false
nullable(nbr) = false
nullable(model_body) = false
nullable(model) = false
nullable(link_states) = false
nullable(link_state) = false
nullable(link_modif) = true
nullable(internal_states) = false
nullable(internal_state) = false
nullable(internal_modif) = true
nullable(interface) = true
nullable(interactive_command) = false
nullable(init_declaration) = false
nullable(id_list) = false
nullable(effect_list) = false
nullable(effect) = false
nullable(counter_test) = false
nullable(counter_modif) = false
nullable(constant) = false
nullable(boolean) = false
nullable(bool_expr_no_or) = false
nullable(bool_expr_comp) = false
nullable(bool_expr) = false
nullable(birate) = false
nullable(arrow) = false
nullable(annot) = true
nullable(alg_with_radius) = false
nullable(alg_expr_up_to_sum) = false
nullable(alg_expr_up_to_prod) = false
nullable(alg_expr_up_to_mod) = false
nullable(alg_expr_up_to_if) = false
nullable(alg_expr) = false
nullable(agent_modif) = true
nullable(agent) = false
first(variable_declaration) = error LABEL ID
first(variable) = TIME PIPE NULL_EVENT LABEL ID EVENT
first(value_list) = STRING
first(sum_token) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(standalone_effect_list) = error TRACK STOP SPECIES_OF SPACE SNAPSHOT PRINTF PLOTENTRY NEWLINE INTRO FLUX DELETE COMMENT ASSIGN APPLY
first(standalone_bool_expr) = error TRUE TMAX TIME TAN SQRT SPACE SINUS PIPE OP_PAR NULL_EVENT NOT NEWLINE MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS COMMENT ABS
first(small_bool_expr) = TRUE OP_PAR NOT FALSE
first(small_alg_expr) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(site_link) = error UNDERSCORE SPACE SHARP NEWLINE INT ID DOT COMMENT
first(site_internal) = error SHARP ID
first(site_counter) = PLUS MINUS GREATER EQUAL
first(site) = ID
first(sentence) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID DOT CONFIG
first(rule_side) = PIPE ID DOT
first(rule_content) = RAR PIPE LRAR ID DOT
first(rule) = RAR PIPE LRAR ID DOT
first(rate) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR OP_CUR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(print_expr_list) = TMAX TIME TAN STRING SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(print_expr) = TMAX TIME TAN STRING SQRT SPACE SINUS PIPE OP_PAR NULL_EVENT NEWLINE MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS COMMENT ABS
first(perturbation_post) = REPEAT
first(perturbation_declaration) = TRUE TMAX TIME TAN SQRT SPACE SINUS PIPE OP_PAR NULL_EVENT NOT NEWLINE MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX DO CPUTIME COSINUS COMMENT ALARM ABS
first(perturbation_alarm) = SPACE NEWLINE COMMENT ALARM
first(pattern) = ID DOT
first(partial_effect_list) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY INTRO FLUX DELETE ASSIGN APPLY
first(nonempty_print_expr) = TMAX TIME TAN STRING SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(nbr) = INT INFINITY FLOAT
first(model_body) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
first(model) = error TOKEN SPACE SIGNATURE RAR PLOT PIPE PERT OBS NEWLINE LRAR LET LABEL INIT ID EOF DOT CONFIG COMMENT
first(link_states) = UNDERSCORE SHARP INT ID DOT
first(link_state) = UNDERSCORE SHARP INT ID DOT
first(link_modif) = DIV
first(internal_states) = SHARP ID
first(internal_state) = SHARP ID
first(internal_modif) = DIV
first(interface) = error ID
first(interactive_command) = error TRACK STOP SPECIES_OF SPACE SNAPSHOT RUN PRINTF PLOTENTRY NEWLINE INTRO FLUX EOF DELETE COMMENT ASSIGN APPLY
first(init_declaration) = error TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(id_list) = ID
first(effect_list) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY OP_PAR INTRO FLUX DELETE ASSIGN APPLY
first(effect) = TRACK STOP SPECIES_OF SNAPSHOT PRINTF PLOTENTRY INTRO FLUX DELETE ASSIGN APPLY
first(counter_test) = GREATER EQUAL
first(counter_modif) = PLUS MINUS
first(constant) = TMAX INT INFINITY FLOAT EMAX CPUTIME
first(boolean) = TRUE FALSE
first(bool_expr_no_or) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(bool_expr_comp) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(bool_expr) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(birate) = AT
first(arrow) = RAR LRAR
first(annot) = SPACE NEWLINE COMMENT
first(alg_with_radius) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr_up_to_sum) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr_up_to_prod) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr_up_to_mod) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr_up_to_if) = TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(alg_expr) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX CPUTIME COSINUS ABS
first(agent_modif) = SPACE PLUS NEWLINE MINUS COMMENT
first(agent) = ID DOT
minimal(variable_declaration) = (* 1 *) error
minimal(variable) = (* 1 *) ID
minimal(value_list) = (* 1 *) STRING
minimal(sum_token) = (* 2 *) INFINITY ID
minimal(standalone_effect_list) = (* 1 *) error
minimal(standalone_bool_expr) = (* 1 *) error
minimal(small_bool_expr) = (* 1 *) TRUE
minimal(small_alg_expr) = (* 1 *) INFINITY
minimal(site_link) = (* 1 *) error
minimal(site_internal) = (* 1 *) error
minimal(site_counter) = (* 3 *) EQUAL INT CL_CUR
minimal(site) = (* 1 *) ID
minimal(sentence) = (* 2 *) DOT error
minimal(rule_side) = (* 1 *) DOT
minimal(rule_content) = (* 1 *) DOT
minimal(rule) = (* 2 *) DOT error
minimal(rate) = (* 1 *) INFINITY
minimal(print_expr_list) = (* 3 *) STRING DOT STRING
minimal(print_expr) = (* 0 *)
minimal(perturbation_post) = (* 0 *)
minimal(perturbation_declaration) = (* 3 *) DO SNAPSHOT SEMICOLON
minimal(perturbation_alarm) = (* 0 *)
minimal(pattern) = (* 1 *) DOT
minimal(partial_effect_list) = (* 1 *) SNAPSHOT
minimal(nonempty_print_expr) = (* 1 *) STRING
minimal(nbr) = (* 1 *) INFINITY
minimal(model_body) = (* 1 *) EOF
minimal(model) = (* 1 *) EOF
minimal(link_states) = (* 1 *) DOT
minimal(link_state) = (* 1 *) DOT
minimal(link_modif) = (* 0 *)
minimal(internal_states) = (* 1 *) ID
minimal(internal_state) = (* 1 *) ID
minimal(internal_modif) = (* 0 *)
minimal(interface) = (* 0 *)
minimal(interactive_command) = (* 1 *) EOF
minimal(init_declaration) = (* 1 *) error
minimal(id_list) = (* 1 *) ID
minimal(effect_list) = (* 2 *) SNAPSHOT SEMICOLON
minimal(effect) = (* 1 *) SNAPSHOT
minimal(counter_test) = (* 2 *) EQUAL INT
minimal(counter_modif) = (* 3 *) PLUS EQUAL INT
minimal(constant) = (* 1 *) INFINITY
minimal(boolean) = (* 1 *) TRUE
minimal(bool_expr_no_or) = (* 1 *) TRUE
minimal(bool_expr_comp) = (* 1 *) TRUE
minimal(bool_expr) = (* 1 *) TRUE
minimal(birate) = (* 2 *) AT INFINITY
minimal(arrow) = (* 1 *) RAR
minimal(annot) = (* 0 *)
minimal(alg_with_radius) = (* 1 *) INFINITY
minimal(alg_expr_up_to_sum) = (* 1 *) INFINITY
minimal(alg_expr_up_to_prod) = (* 1 *) INFINITY
minimal(alg_expr_up_to_mod) = (* 1 *) INFINITY
minimal(alg_expr_up_to_if) = (* 1 *) INFINITY
minimal(alg_expr) = (* 1 *) INFINITY
minimal(agent_modif) = (* 0 *)
minimal(agent) = (* 1 *) DOT
follow(variable_declaration) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(variable) = TRUE TOKEN TMAX TIME THEN TAN STRING SQRT SPACE SMALLER SINUS SIGNATURE SEMICOLON RAR POW PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS NULL_EVENT NEWLINE MULT MOD MINUS MIN MAX LRAR LOG LET LABEL INT INIT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS CONFIG COMMENT COMMA COLON CL_PAR CL_CUR AND ABS
follow(value_list) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(sum_token) = error SEMICOLON RAR LRAR EOF CL_PAR AT
follow(standalone_effect_list) = #
follow(standalone_bool_expr) = #
follow(small_bool_expr) = TOKEN THEN SPACE SIGNATURE SEMICOLON RAR PLOT PIPE PERT OR OBS NEWLINE LRAR LET LABEL INIT ID EOF DOT DO CONFIG COMMENT CL_PAR AND
follow(small_alg_expr) = TRUE TOKEN TMAX TIME THEN TAN STRING SQRT SPACE SMALLER SINUS SIGNATURE SEMICOLON RAR POW PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS NULL_EVENT NEWLINE MULT MOD MINUS MIN MAX LRAR LOG LET LABEL INT INIT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS CONFIG COMMENT COMMA COLON CL_PAR CL_CUR AND ABS
follow(site_link) = error SPACE OP_CUR NEWLINE ID COMMENT COMMA CL_PAR
follow(site_internal) = error SPACE OP_BRA NEWLINE ID COMMENT COMMA CL_PAR
follow(site_counter) = error ID COMMA CL_PAR
follow(site) = error ID COMMA CL_PAR
follow(sentence) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(rule_side) = error SEMICOLON RAR LRAR EOF CL_PAR AT
follow(rule_content) = error SEMICOLON EOF CL_PAR AT
follow(rule) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(rate) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG COMMA
follow(print_expr_list) = TRUE STRING SEMICOLON GREATER FALSE EOF CL_PAR
follow(print_expr) = SEMICOLON GREATER EOF CL_PAR
follow(perturbation_post) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(perturbation_declaration) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(perturbation_alarm) = TRUE TMAX TIME TAN SQRT SINUS PIPE OP_PAR NULL_EVENT NOT MINUS MIN MAX LOG LABEL INT INFINITY ID FLOAT FALSE EXPONENT EVENT EMAX DO CPUTIME COSINUS ABS
follow(pattern) = error TRUE TOKEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID FALSE EOF DOT CONFIG CL_PAR AT
follow(partial_effect_list) = EOF CL_PAR
follow(nonempty_print_expr) = TRUE STRING SEMICOLON GREATER FALSE EOF CL_PAR
follow(nbr) = TRUE TOKEN TMAX TIME THEN TAN STRING SQRT SPACE SMALLER SINUS SIGNATURE SEMICOLON RAR POW PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS NULL_EVENT NOT NEWLINE MULT MOD MINUS MIN MAX LRAR LOG LET LABEL INT INIT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS CONFIG COMMENT COMMA COLON CL_PAR CL_CUR AND ABS
follow(model_body) = #
follow(model) = #
follow(link_states) = DIV CL_BRA
follow(link_state) = UNDERSCORE SPACE SHARP NEWLINE INT ID DOT DIV COMMENT COMMA CL_BRA
follow(link_modif) = CL_BRA
follow(internal_states) = DIV CL_CUR
follow(internal_state) = SPACE SHARP NEWLINE ID DIV COMMENT COMMA CL_CUR
follow(internal_modif) = CL_CUR
follow(interface) = CL_PAR
follow(interactive_command) = #
follow(init_declaration) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(id_list) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(effect_list) = TOKEN SIGNATURE REPEAT RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(effect) = SEMICOLON EOF CL_PAR
follow(counter_test) = SPACE NEWLINE DIV COMMENT CL_CUR
follow(counter_modif) = SPACE NEWLINE COMMENT CL_CUR
follow(constant) = TRUE TOKEN TMAX TIME THEN TAN STRING SQRT SPACE SMALLER SINUS SIGNATURE SEMICOLON RAR POW PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS NULL_EVENT NEWLINE MULT MOD MINUS MIN MAX LRAR LOG LET LABEL INT INIT INFINITY ID GREATER FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF CPUTIME COSINUS CONFIG COMMENT COMMA COLON CL_PAR CL_CUR AND ABS
follow(boolean) = SPACE SEMICOLON NEWLINE GREATER EOF COMMENT CL_PAR
follow(bool_expr_no_or) = TOKEN THEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OR OBS LRAR LET LABEL INIT ID EOF DOT DO CONFIG CL_PAR
follow(bool_expr_comp) = TOKEN THEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OR OBS LRAR LET LABEL INIT ID EOF DOT DO CONFIG CL_PAR AND
follow(bool_expr) = TOKEN THEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT DO CONFIG CL_PAR
follow(birate) = TOKEN SIGNATURE RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID EOF DOT CONFIG
follow(arrow) = error SPACE SEMICOLON PIPE NEWLINE ID EOF DOT COMMENT CL_PAR AT
follow(annot) = error UNDERSCORE TRUE TRACK TOKEN TMAX TIME THEN TAN STRING STOP SQRT SPECIES_OF SNAPSHOT SMALLER SINUS SIGNATURE SHARP SEMICOLON RUN REPEAT RAR PRINTF POW PLUS PLOTENTRY PLOT PIPE PERT OR OP_PAR OP_CUR OP_BRA OBS NULL_EVENT NOT MULT MOD MINUS MIN MAX LRAR LOG LET LABEL INTRO INT INIT INFINITY ID GREATER FLUX FLOAT FALSE EXPONENT EVENT EQUAL EOF EMAX ELSE DOT DO DIV DIFF DELETE CPUTIME COSINUS CONFIG COMMA COLON CL_PAR CL_CUR CL_BRA AT ASSIGN APPLY AND ALARM ABS
follow(alg_with_radius) = CL_CUR
follow(alg_expr_up_to_sum) = TRUE TOKEN THEN STRING SMALLER SIGNATURE SEMICOLON RAR PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS MULT MINUS LRAR LET LABEL INIT ID GREATER FALSE EQUAL EOF ELSE DOT DO DIV DIFF CONFIG COMMA COLON CL_PAR CL_CUR AND
follow(alg_expr_up_to_prod) = TRUE TOKEN THEN STRING SMALLER SIGNATURE SEMICOLON RAR PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS MULT MOD MINUS LRAR LET LABEL INIT ID GREATER FALSE EQUAL EOF ELSE DOT DO DIV DIFF CONFIG COMMA COLON CL_PAR CL_CUR AND
follow(alg_expr_up_to_mod) = TRUE TOKEN THEN STRING SMALLER SIGNATURE SEMICOLON RAR PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS MULT MOD MINUS LRAR LET LABEL INIT ID GREATER FALSE EQUAL EOF ELSE DOT DO DIV DIFF CONFIG COMMA COLON CL_PAR CL_CUR AND
follow(alg_expr_up_to_if) = TRUE TOKEN THEN STRING SMALLER SIGNATURE SEMICOLON RAR PLUS PLOT PIPE PERT OR OP_PAR OP_CUR OBS MINUS LRAR LET LABEL INIT ID GREATER FALSE EQUAL EOF ELSE DOT DO DIFF CONFIG COMMA COLON CL_PAR CL_CUR AND
follow(alg_expr) = TOKEN THEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OR OP_PAR OP_CUR OBS LRAR LET LABEL INIT ID EOF ELSE DOT DO CONFIG COMMA COLON CL_PAR CL_CUR AND
follow(agent_modif) = error TRUE TOKEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID FALSE EOF DOT CONFIG COMMA CL_PAR AT
follow(agent) = error TRUE TOKEN SIGNATURE SEMICOLON RAR PLOT PIPE PERT OBS LRAR LET LABEL INIT ID FALSE EOF DOT CONFIG COMMA CL_PAR AT
Built an LR(0) automaton with 519 states.
The grammar is not SLR(1) -- 4 states have a conflict.
Built an LR(1) automaton with 582 states.
193 out of 582 states have a default reduction.
306 out of 582 states are represented.
0 out of 145 symbols keep track of their start position.
0 out of 145 symbols keep track of their end position.
95 out of 213 productions exploit shiftreduce optimization.
164 out of 582 states can peek at an error.
The generated parser cannot raise Error.
1444 functions before inlining, 246 functions after inlining.
This diff is collapsed.
This diff is collapsed.
Grammar has 18 nonterminal symbols, among which 5 start symbols.
Grammar has 29 terminal symbols.
Grammar has 55 productions.
nullable(texpr0_4) = false
nullable(texpr0_3) = false
nullable(texpr0_2) = false
nullable(texpr0_1) = false
nullable(texpr0) = false
nullable(texpr) = false
nullable(term) = false
nullable(tcons0) = false
nullable(tcons) = false
nullable(scalar0) = false
nullable(scalar) = false
nullable(linexpr0) = false
nullable(linexpr) = false
nullable(lincons) = false
nullable(id) = false
nullable(generator) = false
nullable(coeff0) = false
nullable(coeff) = false
first(texpr0_4) = TK_VAR TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(texpr0_3) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(texpr0_2) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(texpr0_1) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(texpr0) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(texpr) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(term) = TK_VAR TK_SUB TK_MPQF TK_LBRACKET TK_FLOAT
first(tcons0) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(tcons) = TK_VAR TK_SUB TK_SQRT TK_MPQF TK_LPAR TK_LBRACKET TK_FLOAT TK_CAST
first(scalar0) = TK_MPQF TK_FLOAT
first(scalar) = TK_SUB TK_MPQF TK_FLOAT
first(linexpr0) = TK_VAR TK_SUB TK_MPQF TK_LBRACKET TK_FLOAT
first(linexpr) = TK_VAR TK_SUB TK_MPQF TK_LBRACKET TK_FLOAT
first(lincons) = TK_VAR TK_SUB TK_MPQF TK_LBRACKET TK_FLOAT
first(id) = TK_VAR
first(generator) = TK_VERTEX TK_RAYMOD TK_RAY TK_LINEMOD TK_LINE
first(coeff0) = TK_MPQF TK_LBRACKET TK_FLOAT
first(coeff) = TK_SUB TK_MPQF TK_LBRACKET TK_FLOAT
minimal(texpr0_4) = (* 1 *) TK_MPQF
minimal(texpr0_3) = (* 1 *) TK_MPQF
minimal(texpr0_2) = (* 1 *) TK_MPQF
minimal(texpr0_1) = (* 1 *) TK_MPQF
minimal(texpr0) = (* 1 *) TK_MPQF
minimal(texpr) = (* 2 *) TK_MPQF TK_EOF
minimal(term) = (* 1 *) TK_MPQF
minimal(tcons0) = (* 3 *) TK_MPQF TK_EG TK_MPQF
minimal(tcons) = (* 4 *) TK_MPQF TK_EG TK_MPQF TK_EOF
minimal(scalar0) = (* 1 *) TK_MPQF
minimal(scalar) = (* 1 *) TK_MPQF
minimal(linexpr0) = (* 1 *) TK_MPQF
minimal(linexpr) = (* 2 *) TK_MPQF TK_EOF
minimal(lincons) = (* 4 *) TK_MPQF TK_EG TK_MPQF TK_EOF
minimal(id) = (* 1 *) TK_VAR
minimal(generator) = (* 3 *) TK_VERTEX TK_MPQF TK_EOF
minimal(coeff0) = (* 1 *) TK_MPQF
minimal(coeff) = (* 1 *) TK_MPQF
follow(texpr0_4) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_POW TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(texpr0_3) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_POW TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(texpr0_2) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(texpr0_1) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(texpr0) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DISEG TK_ADD
follow(texpr) = #
follow(term) = TK_SUPEG TK_SUP TK_SUB TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DISEG TK_ADD
follow(tcons0) = TK_EOF
follow(tcons) = #
follow(scalar0) = TK_VAR TK_SUPEG TK_SUP TK_SUB TK_SEMICOLON TK_RPAR TK_RBRACKET TK_POW TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(scalar) = TK_SEMICOLON TK_RBRACKET
follow(linexpr0) = TK_SUPEG TK_SUP TK_SUB TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DISEG TK_ADD
follow(linexpr) = #
follow(lincons) = #
follow(id) = TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_POW TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(generator) = #
follow(coeff0) = TK_VAR TK_SUPEG TK_SUP TK_SUB TK_RPAR TK_POW TK_MUL TK_MODULO TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DIV TK_DISEG TK_ADD
follow(coeff) = TK_VAR TK_SUPEG TK_SUP TK_SUB TK_MUL TK_MOD TK_INFEG TK_INF TK_EOF TK_EG TK_DISEG TK_ADD
Built an LR(0) automaton with 121 states.
The grammar is SLR(1).
Built an LR(1) automaton with 121 states.
49 out of 121 states have a default reduction.
41 out of 121 states are represented.
0 out of 54 symbols keep track of their start position.
0 out of 54 symbols keep track of their end position.
44 out of 60 productions exploit shiftreduce optimization.
0 out of 121 states can peek at an error.
330 functions before inlining, 40 functions after inlining.
(* Original file: apron.20160125/apron-20160125/mlapronidl/apron_parser.mly *)
/* $Id$ */
/* Syntaxical analysis to convert strings to objects. */
%{
(* This file is part of the APRON Library, released under LGPL license
with an exception allowing the redistribution of statically linked
executables.
Please read the COPYING file packaged in the distribution *)
let rec neg acc = function
| [] -> acc
| (var,coeff)::l ->
let nacc =
if Coeff.is_zero coeff then
acc
else
(var,(Coeff.neg coeff))::acc
in
neg nacc l
%}
/* \section{Lexems} %======================================================== */
%token TK_EOF
%token TK_VERTEX TK_RAY TK_LINE TK_RAYMOD TK_LINEMOD
%token TK_SUPEG TK_INFEG TK_SUP TK_INF TK_EG TK_DISEG TK_MOD
%token TK_LBRACKET TK_RBRACKET TK_SEMICOLON TK_LPAR TK_RPAR
%token <(Texpr1.typ * Texpr1.round)> TK_MUL
%token <(Texpr1.typ * Texpr1.round)> TK_ADD
%token <(Texpr1.typ * Texpr1.round)> TK_SUB
%token <(Texpr1.typ * Texpr1.round)> TK_DIV
%token <(Texpr1.typ * Texpr1.round)> TK_MODULO
%token <(Texpr1.typ * Texpr1.round)> TK_POW
%token <(Texpr1.typ * Texpr1.round)> TK_CAST
%token <(Texpr1.typ * Texpr1.round)> TK_SQRT
%token <Mpqf.t> TK_MPQF
%token <float> TK_FLOAT
%token <string> TK_VAR
%start lincons generator linexpr tcons texpr
%type <Lincons0.typ * (string*Coeff.t) list> lincons
%type <Generator0.typ * (string*Coeff.t) list> generator
%type <(string*Coeff.t) list> linexpr
%type <Tcons0.typ * Texpr1.expr> tcons
%type <Texpr1.expr> texpr
%%
/* \section{Rules} %========================================================= */
lincons:
linexpr0 TK_EG linexpr0 TK_EOF { (Lincons0.EQ, neg $1 $3) }