Skip to main content
The Lifter includes dedicated frontends for 7 languages. Each frontend understands the idioms and patterns specific to that language.

Language Matrix

LanguageExtensionsAuto-detectArithmeticLogicControl FlowStringsI/OCrypto
JavaScript.jsYesYesYesYesYesYesNo
TypeScript.ts, .tsxYesYesYesYesYesYesNo
Python.pyYesYesYesYesYesYesNo
Rust.rsYesYesYesYesYesYesNo
C.c, .hYesYesYesYesYesYesNo
Go.goYesYesYesYesYesYesNo
COBOL.cob, .cblYesYesYesYesYesYesNo

JavaScript / TypeScript

Recognizes standard JS/TS patterns:
  • +, -, *, /, % → MC_00–MC_07 (Arithmetic family)
  • &&, ||, !, ^ → MC_08–MC_15 (Logic family)
  • if/else, switch, for, while → MC_24–MC_31 (Control family)
  • console.log(), process.stdout.write() → MC_32–MC_39 (I/O family)
  • String concatenation, .length, .slice() → MC_40–MC_47 (String family)
  • Variable declarations (let, const, var) → MC_16–MC_23 (Memory family)

Python

Recognizes Python idioms:
  • Arithmetic operators and // (integer division) → Arithmetic family
  • and, or, not → Logic family
  • if/elif/else, for, while, match → Control family
  • print(), input() → I/O family
  • f-strings, len(), slicing → String family
  • Variable assignments → Memory family

Rust

Recognizes Rust patterns:
  • Arithmetic with overflow awareness (wrapping, saturating) → Arithmetic family
  • &&, ||, ! and bitwise ops → Logic family
  • if/else, match, loop, for, while → Control family
  • println!(), eprintln!(), std::io → I/O family
  • String, &str operations → String family
  • let, let mut bindings → Memory family

C

Recognizes C patterns:
  • All arithmetic and bitwise operators → Arithmetic + Logic families
  • if/else, switch, for, while, do-while → Control family
  • printf(), fprintf(), scanf() → I/O family
  • strlen(), strcpy(), strcat() → String family
  • Variable declarations and assignments → Memory family

Go

Recognizes Go patterns:
  • Arithmetic operators → Arithmetic family
  • Logical and bitwise operators → Logic family
  • if/else, switch, for → Control family
  • fmt.Println(), fmt.Printf() → I/O family
  • String operations → String family
  • := short declarations and var → Memory family

COBOL

Recognizes COBOL patterns:
  • ADD, SUBTRACT, MULTIPLY, DIVIDE, COMPUTE → Arithmetic family
  • IF/ELSE/END-IF, EVALUATE/WHEN → Control family
  • DISPLAY, ACCEPT → I/O family
  • MOVE, STRING, UNSTRING → String + Memory families
  • PERFORM loops → Control family
COBOL lifting is particularly valuable for legacy modernization. The Lifter can extract the computational core of COBOL programs into PCD, which can then be compiled to any modern target (Rust, JavaScript, Python).