summaryrefslogtreecommitdiff
path: root/parser
AgeCommit message (Collapse)Author
2023-08-31codegen: fix interpreter re-entranceMarc Vertes
So multiple successive incremental Evals function correctly. Also improve the following: - Apply the same Eval API to vm0 and vm1 - parser: dot diagram display is now synchronous - codegen: outsource complex code generation for readability - vm1: Pop take the number of values to pop as operand
2023-08-29gint: add an interactive REPLMarc Vertes
2023-08-24doc: add diagrams to scanner and parser readmesMarc Vertes
2023-08-24fix: parser must be initialized before useMarc Vertes
2023-08-09codegen: add a bytecode generator (#5)Marc Vertes
* codegen: add a bytecode generator * cleaning scanner, parser and vm1.
2023-07-24parser: define all node kinds to make the parser multi-language (#3)Marc Vertes
* parser: define all node kinds to make the parser multi-language Defining all AST node kinds in the parser is necessary to make the parser really multi-language. If a language requires a node kind not already present in parser/kind.go, it will be necessary to add it first here. Note that as long as a node kind subtree is structurally identical between languages, even if there are lexical and/or syntaxic differences, it can (and must) be shared amongst multiple language definitions. For example, an "if" statememt in shell script or in C code should give the same `IfStmt` at AST level. In order to let the parser deal with the various language syntaxes, and produce the right node kind and subtree, parser flags will be set in language definitions (see `Flags` field in `NodeSpec` struct). * lang/golang: use parser node kinds * vm0: remode dependency on language definition.
2023-07-10first commitMarc Vertes