| [ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
The EBNF syntax for treecc input files uses the following lexical tokens:
IDENTIFIER ::= <A-Za-z_> { <A-Za-z0-9_> }
STRING ::= '"' <anything that does not include '"'> '"'
| "'" <anything that does not include "'"> "'"
LITERAL_DEFNS ::= "%{" <anything except "%}"> "%}"
LITERAL_END ::= "%%" <any character sequence until EOF>
LITERAL_CODE ::= '{' <anything with matched '{' and '}'> '}'
|
In addition, anything that begins with "%" in the following syntax is a lexical keyword.
The EBNF syntax is as follows:
File ::= { Declaration }
Declaration ::= Node
| Operation
| OperationCase
| Option
| Enum
| Literal
| Header
| Output
| Common
| Include
Node ::= %node IDENTIFIER [ IDENTIFIER ] { NodeFlag } [ '=' Fields ]
NodeFlag ::= %abstract | %typedef
Fields ::= '{' { Field } '}'
Field ::= [ %nocreate ] TypeAndName [ '=' LITERAL_CODE ] ';'
TypeAndName ::= Type [ IDENTIFIER ]
Type ::= TypeName
| Type '*'
| Type '&'
| Type '[' ']'
TypeName ::= IDENTIFIER { IDENTIFIER }
Operation ::= %operation { OperFlag } Type
[ ClassName ] IDENTIFIER '(' [ Params ] ')'
[ '=' LITERAL_CODE ] [ ';' ]
OperFlag ::= %virtual | %inline | %split
ClassName ::= IDENTIFIER "::"
Params ::= Param { ',' Param }
Param ::= TypeAndName | '[' TypeAndName ']'
OperationCase ::= OperationHead { ',' OperationHead } LITERAL_CODE
OperationHead ::= IDENTIFIER '(' [ TypeList ] ')'
TypeList ::= IDENTIFIER { ',' IDENTIFIER }
Option ::= %option IDENTIFIER [ '=' Value ]
Value ::= IDENTIFIER | STRING
Enum ::= %enum IDENTIFIER '=' '{' EnumBody [ ',' ] '}'
EnumBody ::= IDENTIFIER { ',' IDENTIFIER }
Literal ::= { LiteralFlag } (LITERAL_DEFNS | LITERAL_END)
LiteralFlag ::= %both | %decls | %end
Header ::= %header STRING
Output ::= %output STRING
Common ::= %common
Include ::= %include [ %readonly ] STRING
|
| [ << ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated by Klaus Treichel on January, 18 2009 using texi2html 1.78.