Lexer and Parser - studiofu/brain GitHub Wiki
Resources
Simple Parser
https://www.codeproject.com/Articles/345888/How-to-write-a-simple-interpreter-in-JavaScript
Example of further modifying the program to show the lex, tree and the evaluated result
tokens = lex('(1+2*3)+99') // to evaluate the expression "(1+2*3)+99"
C:\Projects\demo-type>node o.js
## LEX #########################################################
[
{
"type": "operator",
"value": "("
},
{
"type": "number",
"value": 1
},
{
"type": "operator",
"value": "+"
},
{
"type": "number",
"value": 2
},
{
"type": "operator",
"value": "*"
},
{
"type": "number",
"value": 3
},
{
"type": "operator",
"value": ")"
},
{
"type": "operator",
"value": "+"
},
{
"type": "number",
"value": 99
},
{
"type": "(end)"
}
]
debug: {"type":"operator","value":"("}
debug: {"type":"number","value":1}
debug: {"type":"number","value":2}
debug: {"type":"number","value":3}
debug: {"type":"number","value":99}
## TREE #########################################################
[
{
"type": "+",
"left": {
"type": "+",
"left": {
"type": "number",
"value": 1
},
"right": {
"type": "*",
"left": {
"type": "number",
"value": 2
},
"right": {
"type": "number",
"value": 3
}
}
},
"right": {
"type": "number",
"value": 99
}
}
]
tree size: 1
## RESULT #########################################################
106