axtionscript
Version:
A simple programming language for AXPU
54 lines (49 loc) • 2.19 kB
JavaScript
import chalk from 'chalk';
class Compiler {
constructor(code) {
this.code = code
}
compile() {
let functions = this.code.split('/')
let result = []
functions = functions.filter(function(e) {
return String(e).trim();
});
functions.forEach((func, index)=> {
let args = func.split(' ')
if(args[0] == 'null'||args[0] == 'nullset'||args[0] == 'Noop'){
result.push('No-Op')
}else if(args[0] == 'End'|| args[0] == 'Return'){
result.push('Halt')
}else if(args[0] == 'Jump'){
result.push(`JMP ${args[1]}`)
}else if(args[0] == 'If'){
result.push(`BRANCH ${args[1]} ${args[2]}`)
}else if(args[0] == 'Input'){
result.push(`INPUT ${args[1]} ${args[2]}`)
}else if(args[0] == 'Output'){
result.push(`OUTPUT ${args[1]} ${args[2]}`)
}else if(args[0] == 'Load'){
result.push(`LOAD_IMDT ${args[1]} ${args[2]}`)
}else if(args[0] == 'Save'){
result.push(`STORE ${args[1]} ${args[2]}`)
}else if(args[0] == 'Fetch'){
result.push(`LOAD ${args[1]} ${args[2]}`)
}else if(args[0] == 'Add'){
result.push(`ADD ${args[1]} ${args[2]} ${args[3]}`)
}else if(args[0] == 'Sub'){
result.push(`SUB ${args[1]} ${args[2]} ${args[3]}`)
}else if(args[0] == 'BIT'){
result.push(`BITWISE ${args[1]} ${args[2]} ${args[3]} ${args[4]}`)
}else if(args[0] == 'BTN'){
result.push(`-BITWISE ${args[1]} ${args[2]} ${args[3]} ${args[4]}`)
}else if(args[0] == '#'){
console.log(chalk.bold.green(func))
return
}
});
// console.log(functions)
return result.join('\n')
}
}
export default Compiler