├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .nvmrc ├── compiler ├── code-generator.ts ├── compiler.ts ├── constants.ts ├── operator-precedence.ts ├── parser.ts ├── post-process-tokens.ts ├── tokenizer.ts ├── transformer.ts └── traverser.ts ├── index.ts ├── jest.config.js ├── package.json ├── question.txt ├── scratchpad.txt ├── tests ├── arithmetic.test.ts ├── basics │ ├── division.txt │ ├── minus.txt │ ├── multiline.txt │ ├── multiply.txt │ └── plus.txt ├── comments │ └── simple.txt ├── literals.test.ts ├── order.test.ts ├── parens │ ├── both.txt │ ├── left-hand-side.txt │ ├── multi-wrapped.txt │ └── right-hand-side.txt ├── variables.test.ts └── variables │ ├── direct-assignment.txt │ ├── multiple-assignments.txt │ └── single-variable.txt ├── tsconfig.json └── utils ├── assert-unreachable.ts └── debug.ts /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/.gitignore -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | latest 2 | -------------------------------------------------------------------------------- /compiler/code-generator.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/code-generator.ts -------------------------------------------------------------------------------- /compiler/compiler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/compiler.ts -------------------------------------------------------------------------------- /compiler/constants.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/constants.ts -------------------------------------------------------------------------------- /compiler/operator-precedence.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/operator-precedence.ts -------------------------------------------------------------------------------- /compiler/parser.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/parser.ts -------------------------------------------------------------------------------- /compiler/post-process-tokens.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/post-process-tokens.ts -------------------------------------------------------------------------------- /compiler/tokenizer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/tokenizer.ts -------------------------------------------------------------------------------- /compiler/transformer.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/transformer.ts -------------------------------------------------------------------------------- /compiler/traverser.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/compiler/traverser.ts -------------------------------------------------------------------------------- /index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/index.ts -------------------------------------------------------------------------------- /jest.config.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/jest.config.js -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/package.json -------------------------------------------------------------------------------- /question.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/question.txt -------------------------------------------------------------------------------- /scratchpad.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/scratchpad.txt -------------------------------------------------------------------------------- /tests/arithmetic.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/arithmetic.test.ts -------------------------------------------------------------------------------- /tests/basics/division.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/basics/division.txt -------------------------------------------------------------------------------- /tests/basics/minus.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/basics/minus.txt -------------------------------------------------------------------------------- /tests/basics/multiline.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/basics/multiline.txt -------------------------------------------------------------------------------- /tests/basics/multiply.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/basics/multiply.txt -------------------------------------------------------------------------------- /tests/basics/plus.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/basics/plus.txt -------------------------------------------------------------------------------- /tests/comments/simple.txt: -------------------------------------------------------------------------------- 1 | // This is a comment -------------------------------------------------------------------------------- /tests/literals.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/literals.test.ts -------------------------------------------------------------------------------- /tests/order.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/order.test.ts -------------------------------------------------------------------------------- /tests/parens/both.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/parens/both.txt -------------------------------------------------------------------------------- /tests/parens/left-hand-side.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/parens/left-hand-side.txt -------------------------------------------------------------------------------- /tests/parens/multi-wrapped.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/parens/multi-wrapped.txt -------------------------------------------------------------------------------- /tests/parens/right-hand-side.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/parens/right-hand-side.txt -------------------------------------------------------------------------------- /tests/variables.test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/variables.test.ts -------------------------------------------------------------------------------- /tests/variables/direct-assignment.txt: -------------------------------------------------------------------------------- 1 | x = 42 -------------------------------------------------------------------------------- /tests/variables/multiple-assignments.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tests/variables/multiple-assignments.txt -------------------------------------------------------------------------------- /tests/variables/single-variable.txt: -------------------------------------------------------------------------------- 1 | (age + 2) = 30 -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/tsconfig.json -------------------------------------------------------------------------------- /utils/assert-unreachable.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/utils/assert-unreachable.ts -------------------------------------------------------------------------------- /utils/debug.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/RobinMalfait/stupid-compiler/HEAD/utils/debug.ts --------------------------------------------------------------------------------