From 8080afb5a9e38116646d69155365fb6bd09ea40c Mon Sep 17 00:00:00 2001 From: Marc Vertes Date: Thu, 24 Aug 2023 10:59:39 +0200 Subject: fix: parser must be initialized before use --- parser/readme.md | 60 -------------------------------------------------------- 1 file changed, 60 deletions(-) delete mode 100644 parser/readme.md (limited to 'parser/readme.md') diff --git a/parser/readme.md b/parser/readme.md deleted file mode 100644 index 19d8778..0000000 --- a/parser/readme.md +++ /dev/null @@ -1,60 +0,0 @@ -# Parser - -A parser takes an array of tokens (produced by the scanner) in input and -returns a node representing a syntax tree. A node is an object -containing a kind, the corresponding token and the ordered references to -descendent nodes. - -A goal is to make the parser generic enough so it can generate syntax -trees for most of existing programming languages (no claim of generality -yet), provided a small set of generating rules per language, and a small -set of validating rules (yet to be defined) to detect invalid -constructs. - -The input tokens are particular in the sense that they include classical -lexical items such as words, separators, numbers, but also strings and -nested blocks, which are resolved at scanning stage rather than parsing -stage. See the scanner for more details. - -The language specification includes the following: - -- a scanner specification, to produce the set of possible tokens. -- a map of node specification per token name. The node specification - defines some parameters influing how the tree is generated. - -## Development status - -A successful test must be provided to check the status. - -- [x] binary operator expressions -- [x] unary operator (prefix) expressions -- [ ] unary operator (suffix) expressions -- [x] operator precedence rules -- [x] parenthesis in expressions -- [ ] semi-colon automatic insertion rules -- [x] call expressions -- [ ] nested calls -- [x] index expressions -- [x] single assignments -- [ ] multi assignments -- [x] simple `if` statement (no `else`) -- [ ] full `if` statement (including `else`, `else if`) -- [x] init expressions in `if` statements -- [x] statement blocks -- [ ] comments -- [ ] for statement -- [ ] switch statement -- [ ] select statement -- [x] return statement -- [x] function declaration -- [ ] method declaration -- [ ] anonymous functions (closures) -- [ ] type declaration -- [ ] var, const, type single declaration -- [ ] var, const, type multi declaration -- [ ] type parametric expressions -- [x] literal numbers (see scanner) -- [x] literal strings -- [ ] composite literal -- [ ] import statements -- [ ] go.mod syntax -- cgit v1.2.3