Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add interpreter ("OCaml + printf" by Rodionov Maxim and Zaikin Vladim…
…ir) (Kakadu#74) * project initialization Signed-off-by: Maxim Rodionov <[email protected]> * chore: update .gitignore and .ocamlformat Signed-off-by: Maxim Rodionov <[email protected]> * feat: add AST Signed-off-by: Maxim Rodionov <[email protected]> * chore: fix linter's comments and delete unnecessary file Signed-off-by: Maxim Rodionov <[email protected]> * feat: add an example of representing a factorial using the written types Signed-off-by: Maxim Rodionov <[email protected]> * fix: an example of representing a factorial check by compiler Signed-off-by: Maxim Rodionov <[email protected]> * test: add cram test for output Signed-off-by: Maxim Rodionov <[email protected]> * refactor: update AST and an example of representing a factorial Removed types related to printf, corrected documentation, changed definition of Exp_fun and Exp_apply. Signed-off-by: Maxim Rodionov <[email protected]> * docs: add authors' emails Signed-off-by: Friend-zva <[email protected]> * refactor: rename 'REPL.ml' to 'main.ml' Signed-off-by: Friend-zva <[email protected]> * fix: unused depends Signed-off-by: Friend-zva <[email protected]> * feat: add 'parse_constant' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: add base 'parse_pattern', 'parse_expression' and 'parse_binding' Signed-off-by: Vladimir Zaikin <[email protected]> * docs: rename 'Str' -> 'Struct' and fix typos Signed-off-by: Vladimir Zaikin <[email protected]> * feat: add parsing of 'structure', 'structure_item' and refactor some functions Added 'parse_structure', 'parse_struct_value', 'parse_value_binding_list', 'parse_ident' and renamed 'skip_many' to 'ws'. Signed-off-by: Maxim Rodionov <[email protected]> * feat: expand 'parse_expression' and 'parse_pattern' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: add 'parse_expression' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'chain_left_associative' and 'parse_exp_match' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: some funs and args in parsing 'expression' and 'pattern' Signed-off-by: Vladimir Zaikin <[email protected]> * chore: react to zanuda warnings Change execation parser. Add 'expect_test' for parser to '/tests/test_parser.ml' and delete 'parser_binding.t'. Add '.mli' for 'parser.ml' and 'test_parser.ml'. Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'parse_pattern', update 'parser.mli' and remove unimplemented functions Signed-off-by: Maxim Rodionov <[email protected]> * feat: add parser tests Signed-off-by: Vladimir Zaikin <[email protected]> * feat: REPL Signed-off-by: Maxim Rodionov <[email protected]> * feat: error handling Signed-off-by: Maxim Rodionov <[email protected]> * feat: REPL Signed-off-by: Maxim Rodionov <[email protected]> * feat: error handling Signed-off-by: Maxim Rodionov <[email protected]> * refactor: delete dir 'main', add test for parser via REPL Signed-off-by: Maxim Rodionov <[email protected]> * chore: remove stanza 'modules' in dune files, edit the test Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'factorial.ml' -> 'factorial.txt' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: missing spaces and types Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'parse_exp_let', 'ws1', rewrite 'parse_ident' and parse of tuple with let* Signed-off-by: Maxim Rodionov <[email protected]> * refactor: replace all liftn with let* Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'parse_expression' and some variable names Signed-off-by: Vladimir Zaikin <[email protected]> * feat: a test for 'Exp_let' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'parse_exp_apply' and a test for it Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'parse_exp_apply_op' Signed-off-by: Vladimir Zaikin <[email protected]> * docs: add more info to 'README.md' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'parse_exp_construct', 'parse_pat_construct', some code refactor Removed unnecessary code, added a function 'is_empty' due to linter comments. Signed-off-by: Maxim Rodionov <[email protected]> * test: for 'Exp_construct' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'ws1' -> 'keyword' and some typos Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'parse_exp_sequence', 'parse_bool_exp', 'parse_bool_pat' Signed-off-by: Maxim Rodionov <[email protected]> * feat: prevent backtracking for 'parse_structure' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'parse_chain_right_associative' and some typos Signed-off-by: Maxim Rodionov <[email protected]> * test: for 'parse_chain_right_associative' and for REPL Signed-off-by: Maxim Rodionov <[email protected]> * chore: correct the order of tests Signed-off-by: Maxim Rodionov <[email protected]> * test: small refactor Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: simplify some checks and concatenation Signed-off-by: Vladimir Zaikin <[email protected]> * feat: add 'parse_exp_fun' and a test for it Signed-off-by: Vladimir Zaikin <[email protected]> * feat: implement pretty-printer Signed-off-by: Maxim Rodionov <[email protected]> * fix: pretty-print of 'Exp_apply' Signed-off-by: Maxim Rodionov <[email protected]> * feat: implement draft of qcheck Signed-off-by: Maxim Rodionov <[email protected]> * refactor: fix linter comments and clean up code Signed-off-by: Maxim Rodionov <[email protected]> * feat: rework ast generation Signed-off-by: Maxim Rodionov <[email protected]> * fix: zanuda's warnings and 'keyword' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: parsing sequence and construct Signed-off-by: Maxim Rodionov <[email protected]> * fix: zanuda comment Signed-off-by: Maxim Rodionov <[email protected]> * feat: implement draft of shrink Signed-off-by: Maxim Rodionov <[email protected]> * feat: shrink of value_binding and case Signed-off-by: Vladimir Zaikin <[email protected]> * test: small refactor Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: simplify some checks and concatenation Signed-off-by: Vladimir Zaikin <[email protected]> * feat: add 'parse_exp_fun' and a test for it Signed-off-by: Vladimir Zaikin <[email protected]> * feat: implement pretty-printer Signed-off-by: Maxim Rodionov <[email protected]> * fix: pretty-print of 'Exp_apply' Signed-off-by: Maxim Rodionov <[email protected]> * feat: implement draft of qcheck Signed-off-by: Maxim Rodionov <[email protected]> * refactor: fix linter comments and clean up code Signed-off-by: Maxim Rodionov <[email protected]> * feat: rework ast generation Signed-off-by: Maxim Rodionov <[email protected]> * fix: zanuda's warnings and 'keyword' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: parsing sequence and construct Signed-off-by: Maxim Rodionov <[email protected]> * fix: zanuda comment Signed-off-by: Maxim Rodionov <[email protected]> * chore: formatting Signed-off-by: Vladimir Zaikin <[email protected]> * chore: library qcheck -> qcheck-core Signed-off-by: Vladimir Zaikin <[email protected]> * test: pretty printer Signed-off-by: Vladimir Zaikin <[email protected]> * test: 'QCheck_base_runner' and pretty printer's tests Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: add brackets to pretty printer to make the meaning of expressions clear Signed-off-by: Maxim Rodionov <[email protected]> * test: update expected result from tests Signed-off-by: Maxim Rodionov <[email protected]> * refactor: string shrinking Signed-off-by: Maxim Rodionov <[email protected]> * feat: parsing, pretty-printing, test for 'option' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'List.con' -> '::' and rename some vars Signed-off-by: Vladimir Zaikin <[email protected]> * chore: replace 'run_qchecker.ml' Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: replace 'String.concat' with 'pp_print_list' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: placement of parentheses in arithmetic expressions in pretty printer Signed-off-by: Maxim Rodionov <[email protected]> * refactor: rework pretty print of 'Exp_apply', add operators to qcheck Signed-off-by: Maxim Rodionov <[email protected]> * test: add pprinter to parser tests Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: tuple signature Signed-off-by: Maxim Rodionov <[email protected]> * feat: explicit type assignment Signed-off-by: Maxim Rodionov <[email protected]> * refactor: match signature Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'Struct_value' and 'Exp_let' signatures Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'Exp_apply' signature Signed-off-by: Maxim Rodionov <[email protected]> * refactor: shrinker Signed-off-by: Maxim Rodionov <[email protected]> * feat: auto generator Signed-off-by: Vladimir Zaikin <[email protected]> * chore: move shrinker to a separate file Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'Type_tuple' signature Signed-off-by: Maxim Rodionov <[email protected]> * fix: construct keyword parsing Signed-off-by: Maxim Rodionov <[email protected]> * revert: construct keyword parsing Signed-off-by: Maxim Rodionov <[email protected]> * feat: auto generator -> ast Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'expression' -> 't' Signed-off-by: Vladimir Zaikin <[email protected]> * docs: update 'README.md' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: zanuda's warnings Signed-off-by: Vladimir Zaikin <[email protected]> * fix: typos and defect in the content of 'ident' Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'core_type' Signed-off-by: Maxim Rodionov <[email protected]> * feat: add 'bin_op' in auto generator Signed-off-by: Vladimir Zaikin <[email protected]> * fix: parsing and generating 'ident' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: generating constructs Signed-off-by: Maxim Rodionov <[email protected]> * feat: 'core_type' and some construct in manual generator Signed-off-by: Vladimir Zaikin <[email protected]> * fix: manual generator Signed-off-by: Maxim Rodionov <[email protected]> * refactor: gen 'Exp_fun' and some limits Signed-off-by: Vladimir Zaikin <[email protected]> * chore: formatting Signed-off-by: Vladimir Zaikin <[email protected]> * feat: pretty output Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'Exp_fun' signature * refactor: pretty print of 'Type_arrow' and 'Type_tuple' Signed-off-by: Maxim Rodionov <[email protected]> * feat: 'verbose' option in generator Signed-off-by: Vladimir Zaikin <[email protected]> * fix: zanuda's warnings Signed-off-by: Vladimir Zaikin <[email protected]> * chore: 'ppx_deriving_qcheck' in depends Signed-off-by: Vladimir Zaikin <[email protected]> * docs: typos in 'README.md' Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'run_qchecker': executable -> module of library 'tests' Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: reduce the code, make it more reusable Signed-off-by: Maxim Rodionov <[email protected]> * feat: draft version of type inference Signed-off-by: Maxim Rodionov <[email protected]> * feat: 'ty' -> 'core_type' and expand 'core_type' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'Type_unit' and 'Type_name' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: type inference of 'Exp_tuple', 'Pat_tuple' and tests * feat: draft version of type inference Signed-off-by: Maxim Rodionov <[email protected]> * feat: 'ty' -> 'core_type' and expand 'core_type' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'Type_unit' and 'Type_name' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: type inference of 'Exp_tuple', 'Pat_tuple' and tests * feat: inference of 'Exp_fun', 'Exp_match', 'Exp_sequence', 'Exp_constraint', 'Pat_constraint' Signed-off-by: Maxim Rodionov <[email protected]> * fix: parsing and generating 'Type_name' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: work with core_type, add 'Type_unit' Signed-off-by: Maxim Rodionov <[email protected]> * feat: impl prec printer and rebuild 'Exp_apply' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: pretty printer and shrinker Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: rename module R to State, remove unnecessary functions helper Signed-off-by: Maxim Rodionov <[email protected]> * feat: inference of 'Exp_construct', 'Pat_construct' Signed-off-by: Maxim Rodionov <[email protected]> * fix: prec printer Signed-off-by: Vladimir Zaikin <[email protected]> * feat: inference of 'Exp_apply', 'Exp_ifthenelse' without else branch Signed-off-by: Maxim Rodionov <[email protected]> * feat: almost full inference of 'Exp_let', 'Struct_value' Signed-off-by: Maxim Rodionov <[email protected]> * feat: parse and inference of cons operator Signed-off-by: Maxim Rodionov <[email protected]> * fix: 'parse_expression' Signed-off-by: Maxim Rodionov <[email protected]> * fix: inference of lists, recursive 'Struct_value' Signed-off-by: Maxim Rodionov <[email protected]> * feat: 'Type_option' Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'let' and 'let rec' inference Signed-off-by: Maxim Rodionov <[email protected]> * feat: inferencer to REPL Signed-off-by: Maxim Rodionov <[email protected]> * feat: Exp_function Signed-off-by: Vladimir Zaikin <[email protected]> * fix: parse_expression and generating 'Exp_let' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: inference of 'Exp_function', 'Exp_match' Signed-off-by: Maxim Rodionov <[email protected]> * fix: pprinter and qcheck Signed-off-by: Vladimir Zaikin <[email protected]> * chore: clean 'inferencer.mli', improve variable names Signed-off-by: Maxim Rodionov <[email protected]> * feat: support for negative numbers Signed-off-by: Maxim Rodionov <[email protected]> * fix: names of type variables Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: 'run_tests' -> 'run_tests_main' in qcheck Signed-off-by: Vladimir Zaikin <[email protected]> * fix: generator type Signed-off-by: Vladimir Zaikin <[email protected]> * fix: inference of recursive definition Signed-off-by: Vladimir Zaikin <[email protected]> * fix: explicit assignment of types Signed-off-by: Maxim Rodionov <[email protected]> * fix: parsing value_binding and construct 'Some' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: generating value_binding Signed-off-by: Vladimir Zaikin <[email protected]> * feat: indent in pretty printer Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'manytests' for type check Signed-off-by: Vladimir Zaikin <[email protected]> * fix: remove requirement of parentheses after 'Some' Signed-off-by: Maxim Rodionov <[email protected]> * fix: remove hanging tests Signed-off-by: Maxim Rodionov <[email protected]> * fix: formatting 'manytests' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: symbolic link for 'manytests' Signed-off-by: Vladimir Zaikin <[email protected]> * chore: react to linter report Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'Impossible_error' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: clean qcheck Signed-off-by: Vladimir Zaikin <[email protected]> * fix: clean pretty printer Signed-off-by: Vladimir Zaikin <[email protected]> * fix: pretty printer 'core_type' Signed-off-by: Vladimir Zaikin <[email protected]> * docs: complement in AST Signed-off-by: Vladimir Zaikin <[email protected]> * refactor: rename variables and functions Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'parse_expression', expand search for 'Bound_several_times' error Signed-off-by: Maxim Rodionov <[email protected]> * docs: type 'error' Signed-off-by: Maxim Rodionov <[email protected]> * chore: remove unnecessary variable Signed-off-by: Maxim Rodionov <[email protected]> * refactor: 'parse_type_var', inference of 'Exp_apply' Signed-off-by: Maxim Rodionov <[email protected]> * fix: ' in 'Type_var' and 'parse_list_or_option_type' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: shrinker 'core_type' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'parse_expression' and clean parsing Signed-off-by: Vladimir Zaikin <[email protected]> * fix: 'parse_expression' and tests for it Signed-off-by: Vladimir Zaikin <[email protected]> * chore: react to linter report Signed-off-by: Vladimir Zaikin <[email protected]> * feat: simple interpreter Signed-off-by: Maxim Rodionov <[email protected]> * fix: pp in Ast and 'Struct_eval' in infer and inter Signed-off-by: Vladimir Zaikin <[email protected]> * feat: 'match_pattern' Signed-off-by: Maxim Rodionov <[email protected]> * feat: eval recursive value bindings, 'Exp_apply' Signed-off-by: Maxim Rodionov <[email protected]> * fix: printer infer result Signed-off-by: Vladimir Zaikin <[email protected]> * chore: react to linter report Signed-off-by: Vladimir Zaikin <[email protected]> * revert: remove 'Type_any' Signed-off-by: Vladimir Zaikin <[email protected]> * feat: eval 'print_int' Signed-off-by: Vladimir Zaikin <[email protected]> * fix: result list of eval Signed-off-by: Vladimir Zaikin <[email protected]> * feat: expand 'REPL' with interpeter, simplify 'eval_value_binding_list' Signed-off-by: Maxim Rodionov <[email protected]> * fix: 'Exp_apply' in 'eval_expression' Signed-off-by: Maxim Rodionov <[email protected]> * fix: repl interaction Signed-off-by: Vladimir Zaikin <[email protected]> * chore: progress in README Signed-off-by: Vladimir Zaikin <[email protected]> * docs: interpreter errors Signed-off-by: Maxim Rodionov <[email protected]> * feat: concatenating strings Signed-off-by: Maxim Rodionov <[email protected]> * refactor: clean code, tests and output REPL Signed-off-by: Vladimir Zaikin <[email protected]> --------- Signed-off-by: Maxim Rodionov <[email protected]> Signed-off-by: Friend-zva <[email protected]> Signed-off-by: Vladimir Zaikin <[email protected]> Co-authored-by: Friend-zva <[email protected]>
- Loading branch information