Compleating assignment for interpreter, modified grammars, fixed tests

This commit is contained in:
elvis
2024-11-16 15:40:00 +01:00
parent 40055899c9
commit 9e599cc018
24 changed files with 593 additions and 1238 deletions

View File

@ -9,18 +9,24 @@
let keyword_table =
let mapping = [
("main", MAIN);
("skip", SKIP);
("if", IF);
("else", ELSE);
("while", WHILE);
("for", FOR);
("as", AS);
("def", DEF);
("do", DO);
("true", BOOL(true));
("else", ELSE);
("false", BOOL(false));
("for", FOR);
("if", IF);
("input", INPUT);
("main", MAIN);
("not", BNOT);
("rand", RAND);
("output", OUTPUT);
("powmod", POWERMOD);
("rand", RAND);
("skip", SKIP);
("then", THEN);
("true", BOOL(true));
("while", WHILE);
("with", WITH);
]
in create_hashtable (List.length mapping) mapping
}
@ -42,26 +48,24 @@ rule read = parse
| Some keyword -> keyword
| None -> VARIABLE(v)
}
| ";" {SEQUENCE}
| "," {COMMA}
| "{" {LEFTGPAR}
| "}" {RIGHTGPAR}
| "%" {MODULO}
| "&&" {BAND}
| "(" {LEFTPAR}
| ")" {RIGHTPAR}
| "<" {BCMPLESS}
| ">" {BCMPGREATER}
| "+" {PLUS}
| "-" {MINUS}
| "*" {TIMES}
| "+" {PLUS}
| "," {COMMA}
| "-" {MINUS}
| "/" {DIVISION}
| "%" {MODULO}
| "^" {POWER}
| ":=" {ASSIGNMENT}
| "&&" {BAND}
| "||" {BOR}
| "==" {BCMP}
| ";" {SEQUENCE}
| "<" {BCMPLESS}
| "<=" {BCMPLESSEQ}
| "==" {BCMP}
| ">" {BCMPGREATER}
| ">=" {BCMPGREATEREQ}
| "^" {POWER}
| "||" {BOR}
| integer as i {INT(int_of_string i)}
| "(*" {comments 0 lexbuf}
| eof {EOF}