diff options
| author | kartofen <kartofen.mail.0@protonmail.com> | 2025-08-26 01:17:10 +0300 |
|---|---|---|
| committer | kartofen <kartofen.mail.0@protonmail.com> | 2025-08-26 01:17:10 +0300 |
| commit | 46e786db9d1b48b8fbc3502e36f093b755f3e09f (patch) | |
| tree | 9e279216e68f3fe4b0849d1e07184fe674dc551f /demos/sample-files/lbp.g | |
| parent | 1c83c514c8108fccfec9764da5e4563b98eb871b (diff) | |
grammar for the grammar and lexing and parsing of a new language lbp
Diffstat (limited to 'demos/sample-files/lbp.g')
| -rw-r--r-- | demos/sample-files/lbp.g | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/demos/sample-files/lbp.g b/demos/sample-files/lbp.g new file mode 100644 index 0000000..bc82cb3 --- /dev/null +++ b/demos/sample-files/lbp.g @@ -0,0 +1,39 @@ +-terminal NUM IDEN ATOM + COMMA SEMICOL DOT COLON + RPAREN LPAREN RBRACE LBRACE + + TYPELIST_START TYPELIST_END + T_INT T_ENUM T_STRUCT + ST_FUNCTION ST_BIG ST_LITTLE ST_NATIVE; + +-nonterminal S exprlist expr sym fieldlist basetype subtypelist. + +-left LPAREN; +-left COMMA SEMICOL. + +S: exprlist DOT {}; + +exprlist: expr {} + | exprlist expr {} + | exprlist COMMA exprlist {} + | exprlist SEMICOL exprlist {}; + +expr: NUM {} + | sym {} + | sym fieldlist {} + | sym TYPELIST_START basetype TYPELIST_END {} + | sym TYPELIST_START basetype subtypelist TYPELIST_END {} + | LBRACE exprlist DOT RBRACE {} + | LPAREN exprlist RPAREN {}; + +sym: IDEN {} | ATOM {}; + +fieldlist: COLON IDEN {} + | fieldlist fieldlist {}; + +basetype: T_INT {} + | T_STRUCT {} | T_STRUCT LPAREN ATOM RPAREN {} + | T_ENUM {} | T_ENUM LPAREN ATOM RPAREN {}; +subtypelist: ST_FUNCTION LPAREN exprlist RPAREN {} + | ST_BIG {} | ST_LITTLE {} | ST_NATIVE {} + | subtypelist subtypelist {}. |
