├── .github ├── run_tests.py └── workflows │ ├── build.yaml │ ├── build_and_test.yaml │ └── test_each_chapter.yaml ├── .gitignore ├── .ocamlformat ├── LICENSE ├── README.md ├── bin ├── dune └── main.ml ├── dune-project ├── lib ├── assembly.ml ├── ast.ml ├── backend │ ├── assembly_symbols.ml │ ├── assembly_symbols.mli │ ├── codegen.ml │ ├── codegen.mli │ ├── instruction_fixup.ml │ ├── instruction_fixup.mli │ ├── regalloc.ml │ ├── regalloc.mli │ ├── replace_pseudos.ml │ └── replace_pseudos.mli ├── backward_dataflow.ml ├── backward_dataflow.mli ├── cfg.ml ├── cfg.mli ├── compile.ml ├── compile.mli ├── const.ml ├── const_convert.ml ├── const_convert.mli ├── dune ├── emit.ml ├── emit.mli ├── initializers.ml ├── initializers.mli ├── lex.ml ├── lex.mli ├── optimizations │ ├── address_taken.ml │ ├── address_taken.mli │ ├── constant_folding.ml │ ├── constant_folding.mli │ ├── copy_prop.ml │ ├── copy_prop.mli │ ├── dead_store_elim.ml │ ├── dead_store_elim.mli │ ├── optimize.ml │ ├── optimize.mli │ ├── optimize_utils.ml │ ├── optimize_utils.mli │ ├── unreachable_code_elim.ml │ └── unreachable_code_elim.mli ├── parse.ml ├── parse.mli ├── reg_set.ml ├── semantic_analysis │ ├── identifier_resolution.ml.orig │ ├── label_loops.ml │ ├── label_loops.mli │ ├── resolve.ml │ ├── resolve.mli │ ├── typecheck.ml │ └── typecheck.mli ├── settings.ml ├── symbols.ml ├── symbols.mli ├── tacky.ml ├── tacky_gen.ml ├── tacky_gen.mli ├── tacky_print.ml ├── tok_stream.ml ├── tok_stream.mli ├── tokens.ml ├── type_table.ml ├── type_table.mli ├── types.ml └── util │ ├── disjoint_sets.ml │ ├── disjoint_sets.mli │ ├── int8.ml │ ├── int8.mli │ ├── rounding.ml │ ├── rounding.mli │ ├── type_utils.ml │ ├── type_utils.mli │ ├── unique_ids.ml │ ├── unique_ids.mli │ ├── utils.ml │ └── utils.mli ├── nqcc.opam └── test ├── dune ├── test_constant_folding.ml ├── test_convert.ml ├── test_int8.ml ├── test_lex.ml ├── test_parse.ml └── test_util.ml /.github/run_tests.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.github/run_tests.py -------------------------------------------------------------------------------- /.github/workflows/build.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.github/workflows/build.yaml -------------------------------------------------------------------------------- /.github/workflows/build_and_test.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.github/workflows/build_and_test.yaml -------------------------------------------------------------------------------- /.github/workflows/test_each_chapter.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.github/workflows/test_each_chapter.yaml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.gitignore -------------------------------------------------------------------------------- /.ocamlformat: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/.ocamlformat -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/README.md -------------------------------------------------------------------------------- /bin/dune: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/bin/dune -------------------------------------------------------------------------------- /bin/main.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/bin/main.ml -------------------------------------------------------------------------------- /dune-project: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/dune-project -------------------------------------------------------------------------------- /lib/assembly.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/assembly.ml -------------------------------------------------------------------------------- /lib/ast.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/ast.ml -------------------------------------------------------------------------------- /lib/backend/assembly_symbols.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/assembly_symbols.ml -------------------------------------------------------------------------------- /lib/backend/assembly_symbols.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/assembly_symbols.mli -------------------------------------------------------------------------------- /lib/backend/codegen.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/codegen.ml -------------------------------------------------------------------------------- /lib/backend/codegen.mli: -------------------------------------------------------------------------------- 1 | val gen : Tacky.t -> Assembly.t 2 | -------------------------------------------------------------------------------- /lib/backend/instruction_fixup.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/instruction_fixup.ml -------------------------------------------------------------------------------- /lib/backend/instruction_fixup.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/instruction_fixup.mli -------------------------------------------------------------------------------- /lib/backend/regalloc.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/regalloc.ml -------------------------------------------------------------------------------- /lib/backend/regalloc.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/regalloc.mli -------------------------------------------------------------------------------- /lib/backend/replace_pseudos.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/replace_pseudos.ml -------------------------------------------------------------------------------- /lib/backend/replace_pseudos.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backend/replace_pseudos.mli -------------------------------------------------------------------------------- /lib/backward_dataflow.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backward_dataflow.ml -------------------------------------------------------------------------------- /lib/backward_dataflow.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/backward_dataflow.mli -------------------------------------------------------------------------------- /lib/cfg.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/cfg.ml -------------------------------------------------------------------------------- /lib/cfg.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/cfg.mli -------------------------------------------------------------------------------- /lib/compile.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/compile.ml -------------------------------------------------------------------------------- /lib/compile.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/compile.mli -------------------------------------------------------------------------------- /lib/const.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/const.ml -------------------------------------------------------------------------------- /lib/const_convert.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/const_convert.ml -------------------------------------------------------------------------------- /lib/const_convert.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/const_convert.mli -------------------------------------------------------------------------------- /lib/dune: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/dune -------------------------------------------------------------------------------- /lib/emit.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/emit.ml -------------------------------------------------------------------------------- /lib/emit.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/emit.mli -------------------------------------------------------------------------------- /lib/initializers.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/initializers.ml -------------------------------------------------------------------------------- /lib/initializers.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/initializers.mli -------------------------------------------------------------------------------- /lib/lex.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/lex.ml -------------------------------------------------------------------------------- /lib/lex.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/lex.mli -------------------------------------------------------------------------------- /lib/optimizations/address_taken.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/address_taken.ml -------------------------------------------------------------------------------- /lib/optimizations/address_taken.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/address_taken.mli -------------------------------------------------------------------------------- /lib/optimizations/constant_folding.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/constant_folding.ml -------------------------------------------------------------------------------- /lib/optimizations/constant_folding.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/constant_folding.mli -------------------------------------------------------------------------------- /lib/optimizations/copy_prop.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/copy_prop.ml -------------------------------------------------------------------------------- /lib/optimizations/copy_prop.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/copy_prop.mli -------------------------------------------------------------------------------- /lib/optimizations/dead_store_elim.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/dead_store_elim.ml -------------------------------------------------------------------------------- /lib/optimizations/dead_store_elim.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/dead_store_elim.mli -------------------------------------------------------------------------------- /lib/optimizations/optimize.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/optimize.ml -------------------------------------------------------------------------------- /lib/optimizations/optimize.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/optimize.mli -------------------------------------------------------------------------------- /lib/optimizations/optimize_utils.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/optimize_utils.ml -------------------------------------------------------------------------------- /lib/optimizations/optimize_utils.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/optimize_utils.mli -------------------------------------------------------------------------------- /lib/optimizations/unreachable_code_elim.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/unreachable_code_elim.ml -------------------------------------------------------------------------------- /lib/optimizations/unreachable_code_elim.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/optimizations/unreachable_code_elim.mli -------------------------------------------------------------------------------- /lib/parse.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/parse.ml -------------------------------------------------------------------------------- /lib/parse.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/parse.mli -------------------------------------------------------------------------------- /lib/reg_set.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/reg_set.ml -------------------------------------------------------------------------------- /lib/semantic_analysis/identifier_resolution.ml.orig: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/identifier_resolution.ml.orig -------------------------------------------------------------------------------- /lib/semantic_analysis/label_loops.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/label_loops.ml -------------------------------------------------------------------------------- /lib/semantic_analysis/label_loops.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/label_loops.mli -------------------------------------------------------------------------------- /lib/semantic_analysis/resolve.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/resolve.ml -------------------------------------------------------------------------------- /lib/semantic_analysis/resolve.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/resolve.mli -------------------------------------------------------------------------------- /lib/semantic_analysis/typecheck.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/typecheck.ml -------------------------------------------------------------------------------- /lib/semantic_analysis/typecheck.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/semantic_analysis/typecheck.mli -------------------------------------------------------------------------------- /lib/settings.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/settings.ml -------------------------------------------------------------------------------- /lib/symbols.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/symbols.ml -------------------------------------------------------------------------------- /lib/symbols.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/symbols.mli -------------------------------------------------------------------------------- /lib/tacky.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tacky.ml -------------------------------------------------------------------------------- /lib/tacky_gen.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tacky_gen.ml -------------------------------------------------------------------------------- /lib/tacky_gen.mli: -------------------------------------------------------------------------------- 1 | val gen : Ast.Typed.t -> Tacky.t 2 | -------------------------------------------------------------------------------- /lib/tacky_print.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tacky_print.ml -------------------------------------------------------------------------------- /lib/tok_stream.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tok_stream.ml -------------------------------------------------------------------------------- /lib/tok_stream.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tok_stream.mli -------------------------------------------------------------------------------- /lib/tokens.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/tokens.ml -------------------------------------------------------------------------------- /lib/type_table.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/type_table.ml -------------------------------------------------------------------------------- /lib/type_table.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/type_table.mli -------------------------------------------------------------------------------- /lib/types.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/types.ml -------------------------------------------------------------------------------- /lib/util/disjoint_sets.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/disjoint_sets.ml -------------------------------------------------------------------------------- /lib/util/disjoint_sets.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/disjoint_sets.mli -------------------------------------------------------------------------------- /lib/util/int8.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/int8.ml -------------------------------------------------------------------------------- /lib/util/int8.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/int8.mli -------------------------------------------------------------------------------- /lib/util/rounding.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/rounding.ml -------------------------------------------------------------------------------- /lib/util/rounding.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/rounding.mli -------------------------------------------------------------------------------- /lib/util/type_utils.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/type_utils.ml -------------------------------------------------------------------------------- /lib/util/type_utils.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/type_utils.mli -------------------------------------------------------------------------------- /lib/util/unique_ids.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/unique_ids.ml -------------------------------------------------------------------------------- /lib/util/unique_ids.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/unique_ids.mli -------------------------------------------------------------------------------- /lib/util/utils.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/utils.ml -------------------------------------------------------------------------------- /lib/util/utils.mli: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/lib/util/utils.mli -------------------------------------------------------------------------------- /nqcc.opam: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/nqcc.opam -------------------------------------------------------------------------------- /test/dune: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/dune -------------------------------------------------------------------------------- /test/test_constant_folding.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_constant_folding.ml -------------------------------------------------------------------------------- /test/test_convert.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_convert.ml -------------------------------------------------------------------------------- /test/test_int8.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_int8.ml -------------------------------------------------------------------------------- /test/test_lex.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_lex.ml -------------------------------------------------------------------------------- /test/test_parse.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_parse.ml -------------------------------------------------------------------------------- /test/test_util.ml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/nlsandler/nqcc2/HEAD/test/test_util.ml --------------------------------------------------------------------------------