Skip to content
This repository was archived by the owner on Jan 30, 2026. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions src/mlang/test_framework/irj_lexer.mll
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,9 @@ rule token = parse
{ FLOAT (float_of_string f) } (* DONT KEEP THAT *)
(* Probably in order to write a specific function for our number format *)

| "indefini"
{ UNDEFINED }

| ['a'-'z' 'A'-'Z' '0'-'9' '_']+ as s
{ SYMBOL s }

Expand Down
5 changes: 4 additions & 1 deletion src/mlang/test_framework/irj_parser.mly
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
%token<string> SYMBOL NAME
%token<int> INTEGER
%token<float> FLOAT
%token UNDEFINED
/* The undefined value */

%token SLASH
/* Used as field separator */
Expand Down Expand Up @@ -107,7 +109,7 @@ rappels:

variable_and_value:
| var = SYMBOL SLASH value = value NL { (Pos.mark var (mk_position $loc(var)), Pos.mark value (mk_position $loc(value))) }
| var = SYMBOL SLASH? NL { (Pos.mark var (mk_position $loc(var)), Pos.without U) }
| var = SYMBOL SLASH? NL { (Pos.mark var (mk_position $loc(var)), Pos.mark (I 0) (mk_position $loc(var))) }

calc_error:
| error = SYMBOL NL { Pos.mark error (mk_position $sloc) }
Expand Down Expand Up @@ -153,3 +155,4 @@ integer:
value:
| i = INTEGER { I (i) }
| f = FLOAT { F (f) }
| UNDEFINED { U }
11 changes: 3 additions & 8 deletions src/mlang/test_framework/test_interpreter.ml
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ let to_MIR_function_and_inputs (program : Mir.program) (t : Irj_ast.irj_file) :
in
let toNum p = Com.Numeric (Com.Float (float p)) in
let optToNum = function
| Some p -> Com.Numeric (Com.Float (float p))
| None -> Com.Numeric Com.Undefined
| Some p -> Com.(Numeric (Float (float p)))
| None -> Com.(Numeric (Float 0.))
in
let toEvent (rappel : Irj_ast.rappel) =
StrMap.empty
Expand All @@ -100,12 +100,7 @@ let to_MIR_function_and_inputs (program : Mir.program) (t : Irj_ast.irj_file) :
in
let expVars vars_init =
let fold res (Pos.Mark (var, _), Pos.Mark (value, _)) =
let fVal =
match value with
| Irj_ast.I i -> Com.Float (float i)
| Irj_ast.F f -> Com.Float f
| Irj_ast.U -> Com.Undefined
in
let fVal = irj_lit_to_com_lit value in
StrMap.add var fVal res
in
List.fold_left fold StrMap.empty vars_init
Expand Down
6 changes: 3 additions & 3 deletions tests/cram/ok/arithmetique.t/deux_indef.irj
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
#NOM
INDEF-INDEF
#ENTREES-PRIMITIF
X/
Y/
X/indefini
Y/indefini
#CONTROLES-PRIMITIF
#RESULTATS-PRIMITIF
Z/
Z/indefini
#ENTREES-CORRECTIF
#CONTROLES-CORRECTIF
#RESULTATS-CORRECTIF
Expand Down
2 changes: 1 addition & 1 deletion tests/cram/ok/arithmetique.t/div_x_0.irj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ X/1
Y/0
#CONTROLES-PRIMITIF
#RESULTATS-PRIMITIF
Z/
Z/indefini
#ENTREES-CORRECTIF
#CONTROLES-CORRECTIF
#RESULTATS-CORRECTIF
Expand Down
Loading