summaryrefslogtreecommitdiff
path: root/grammars/c/grammar.txt
diff options
context:
space:
mode:
Diffstat (limited to 'grammars/c/grammar.txt')
-rw-r--r--grammars/c/grammar.txt130
1 files changed, 0 insertions, 130 deletions
diff --git a/grammars/c/grammar.txt b/grammars/c/grammar.txt
deleted file mode 100644
index ffe85c3..0000000
--- a/grammars/c/grammar.txt
+++ /dev/null
@@ -1,130 +0,0 @@
-KEYWORDS list
- switch volatile case while do else const for if
- struct union typedef void
-
-IDENT regex
- [a-zA-Z_][0-9a-zA-Z_]*
-
-INT regex
- [0-9]+
-
-OP list
- ( ) { } [ ]
- ; ,
- - + ! % * & / << >> ^ |
- -= += != %= *= &= /= <<= == >>= ^= |=
- && || ++ --
- < <= > >= =
- . -> ? :
-
-############### TYPE PARSING
-# A PRIMITIVE_TYPE is the core object that takes up space after dereferencing,
-# calling, etc. A normal variable declaration is PRIMITIVE_TYPE (expression)
-PRIMITIVE_TYPE nonterm
- struct IDENT
- union IDENT
- struct IDENT AGGREGATE_DECLARATION
- union IDENT AGGREGATE_DECLARATION
- const PRIMITIVE_TYPE
- volatile PRIMITIVE_TYPE
- void
- IDENT
-
-# A TYPE_EXPRESSION is basically an lvalue expression.
-TYPE_EXPRESSION nonterm
- IDENT
- TYPE_EXPRESSION [ ]
- TYPE_EXPRESSION [ INT ]
- * TYPE_EXPRESSION
- ( TYPE_EXPRESSION )
- TYPE_EXPRESSION ( )
- TYPE_EXPRESSION ( ARGS )
-
-DECLARATION nonterm
- PRIMITIVE_TYPE TYPE_EXPRESSION
-
-# An ANONYMOUS_TYPE has no name
-ANONYMOUS_TYPE nonterm
- PRIMITIVE_TYPE
- ANONYMOUS_TYPE [ ]
- ANONYMOUS_TYPE [ INT ]
- * ANONYMOUS_TYPE
- ( ANONYMOUS_TYPE )
- ANONYMOUS_TYPE ( )
- ANONYMOUS_TYPE ( ARGS )
-
-############### TOP LEVEL
-TOP_LEVEL nonterm .start
- TYPEDEF
- FUNCTION
-
-ARGS nonterm
- ANONYMOUS_TYPE
- ANONYMOUS_TYPE , ARGS
- DECLARATION
- DECLARATION , ARGS
-
-FUNCTION nonterm
- DECLARATION ( ) TRUE_BLOCK
- DECLARATION ( ARGS ) TRUE_BLOCK
-
-AGGREGATE_DECLARATION nonterm
- { STMTS }
-
-TYPEDEF nonterm
- typedef PRIMITIVE_TYPE TYPE_EXPRESSION ;
-
-EXPR nonterm
- INT
- IDENT
- EXPR --
- EXPR ++
- EXPR OP EXPR
- EXPR ? EXPR : EXPR
-
-IF nonterm
- if ( EXPR ) BLOCK
- if ( EXPR ) BLOCK else BLOCK
-
-WHILE nonterm
- while ( EXPR ) BLOCK
-
-DO nonterm
- do BLOCK while ( EXPR )
-
-FOR nonterm
- for ( EXPR ; EXPR ; EXPR ) BLOCK
-
-SWITCH nonterm
- switch ( EXPR ) BLOCK
-
-DECLARATION_CHAIN nonterm
- TYPE_EXPRESSION
- TYPE_EXPRESSION , DECLARATION_CHAIN
- TYPE_EXPRESSION = EXPR
- TYPE_EXPRESSION = EXPR , DECLARATION_CHAIN
-
-DECLARATION_STATEMENT nonterm
- PRIMITIVE_TYPE DECLARATION_CHAIN ;
-
-STMT nonterm
- IF
- WHILE
- DO
- FOR
- SWITCH
- # NOTE: it auto-prefers declarations right now
- DECLARATION_STATEMENT .name DECL_STMT
- EXPR ;
-
-STMTS nonterm
- STMT
- STMT STMTS
-
-TRUE_BLOCK nonterm
- { }
- { STMTS }
-
-BLOCK nonterm
- TRUE_BLOCK
- STMT
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback