npm i llvm.jsNote
git clone https://github.com/llvm-js/llvm-project.git const llvm = require('llvm.js/llvm'); const exceptions = require('llvm.js/exceptions'); const expression = require('llvm.js/expression'); const codeGen = require('llvm.js/codegen');const llvm = require('llvm.js/llvm'); const language = new llvm.llvm(); // config (Optional) let file_c = fs.readFileSync(src).toString('utf8').split('\n'); const lexer = new llvm.Lexer(); let ast = lexer.lexer(file_c); // console.log(ast); // example language.run(); // view the characteristics of the programming language and the project language.repl((data) => { console.log(data); });cd ./tests node language.js // JavaScript --> AsmX MachineCode let text = "Hello MachineCode AsmX!"; const example = 'this constant section'; // optimized console.log('call 1'); console.log('call 2');segment variable: text: "Hello MachineCode AsmX!" segment const: example: 'this constant section' print: push $1 call 0x04 main code: mov $1 'call 1' func print mov $1 'call 2' func print An example of using llvm.js in RunKit + npm
JavaScript code:
const fs = require('fs'); const Expression = require('llvm.js/expression'); const codeGen = require('llvm.js/codegen'); let expression = new Expression('2 + 4'); console.log(expression.answer()); codeGen.genSLFunction('print'); codeGen.callFunction('print', '1'); codeGen.codegen('output'); fs.readFileSync('output.bytex').toString('utf8');Output:
6 print: push $1 call 0x04 main code: mov $1 1 func print - Config
- set(object: IConfig)
- setCommentLine(string: string)
- forbiddenSymbol(char: string)
- setCommentBlock(string: string)
- setCommentBlock(string: string[])
- clearCommentLine( )
- clearCommentBlock( )
- setSupportNumberSnake(bool: boolean)
- clearSupportNumberSnake( )
- Grammar
- verifyGrammar(current: number, ast: Array, grammar: Array, strict: boolean): object
- verifyGrammarNoStrict(current: number, ast: Array, grammar: Array): object