diff options
Diffstat (limited to 'grammars/c/grammar.txt')
-rw-r--r-- | grammars/c/grammar.txt | 130 |
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 |