Compiler / Transpiler Engineer
Caizin
Full Time3+ yearsPosted 3 days ago
Let the right jobs find you
Get personalised suggestions from verified company career pages, matched to your role, location, level, and skills.
Overview
Position Type
Full Time
Experience
3+ years
Job Description
What you will do
- Implement and extend parsers for UniBasic statements and expressions (control flow, file/OS I/O, dynamic-array and multivalue operations, CALL dispatch), each producing well-defined AST nodes.
- Build and refine semantic-analysis passes: name resolution, parameter-direction inference (input / output / in-out), and type binding/propagation across call sites.
- Implement AST-to-AST transformations that lower UniBasic constructs to a Java AST, and help keep the emitter a pure printer.
- Handle the hard, real-world edge cases legacy code is full of: ambiguous syntax, context sensitive tokenization, inconsistent formatting, and dialect quirks.
- Write thorough tests for every parser, pass, and transformation: including golden-file tests that transpile real UniBasic and compile the generated Java.
- Diagnose failures across the whole chain (a wrong.java output traced back to a lexer, parser, or transformer bug) and fix the root cause.
- Contribute to design discussions on pipeline architecture, AST shape, and how new language features flow from parse → SEMA → transform → emit.
Must-have qualifications
Compiler / language-tool fundamentals
- 3–5yearsofsoftware engineering experience, including hands-on work on a compiler, transpiler, interpreter, static analyzer, linter, or similar language tooling.
- Solid working knowledge of the frontend pipeline: lexing/tokenization, parsing (recursive descent / Pratt / precedence handling), AST design, and at least one of semantic analysis or code generation.
- Comfortable reasoning about grammars, precedence/associativity, and context sensitive parsing: and about why a construct produces the AST node it does.
Engineering craft
- Strong Java (Java 17+) and comfort with a typed, Object-oriented codebase.
- Disciplined about testing: you write tests for the code you change and treat a failing corpus file as a bug to root-cause, not skip.
- Practical experience with refactoring and clean-code.
- Clear written communication; able to justify a parsing/lowering decision and document edge cases