Compiler / Transpiler Engineer (Mid-Level)
Team: Language Tools / Legacy Modernization About the project We are building a transpiler that converts UniBasic (a legacy BASIC dialect) into Java. The codebase we are modernizing is large: on the order of 14,000 source programs: so the transpiler is not a one-off script but a real compiler frontend:
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, tran spiler, 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. 1 • Clear written communication; able to justify a parsing/lowering decision and document edge cases