aboutsummaryrefslogtreecommitdiff
path: root/demos/sample-files/lbp.g
diff options
context:
space:
mode:
Diffstat (limited to 'demos/sample-files/lbp.g')
-rw-r--r--demos/sample-files/lbp.g39
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 {}.