Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a factorial parser ("OCaml + printf" by Rodionov Maxim and Zaikin…
… Vladimir) (Kakadu#32) * 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]> --------- Signed-off-by: Maxim Rodionov <[email protected]> Signed-off-by: Friend-zva <[email protected]> Signed-off-by: Vladimir Zaikin <[email protected]> Co-authored-by: Maxim Rodionov <[email protected]>
- Loading branch information