BNF for DXFParser.jj

TOKENS

<DEFAULT> TOKEN : {
<EOL: "\r\n">
}

   
<DEFAULT> TOKEN : {
<SEC_START: ([" "])* "0" <EOL> "SECTION" <EOL>>
| <SEC_END: ([" "])* "0" <EOL> "ENDSEC" <EOL>>
| <FILE_EOF: ([" "])* "0" <EOL> "EOF" <EOL>>
| <S_HEADER: ([" "])* "2" <EOL> "HEADER" <EOL>>
| <S_CLASSES: ([" "])* "2" <EOL> "CLASSES" <EOL>>
| <S_TABLES: ([" "])* "2" <EOL> "TABLES" <EOL>>
| <S_BLOCKS: ([" "])* "2" <EOL> "BLOCKS" <EOL>>
| <S_ENTITIES: ([" "])* "2" <EOL> "ENTITIES" <EOL>>
| <S_OBJECTS: ([" "])* "2" <EOL> "OBJECTS" <EOL>>
| <S_THUMBS: ([" "])* "2" <EOL> "THUMBNAILIMAGE" <EOL>>
| <BLK_START: ([" "])* "0" <EOL> "BLOCK" <EOL>>
| <BLK_END: ([" "])* "0" <EOL> "ENDBLK" <EOL>>
| <TABLE_START: ([" "])* "0" <EOL> "TABLE" <EOL>>
| <TABLE_END: ([" "])* "0" <EOL> "ENDTAB" <EOL>>
| <#GROUP_CODE: ([" "])* (["0"-"9"])+>
| <#TEXT: <EOL> (~["\r","\n"])* <EOL>>
| <TOKEN_0: ([" "])* "0" <TEXT>>
| <TOKEN_9: ([" "])* "9" <TEXT>>
| <TOKEN_X: <GROUP_CODE> <TEXT>>
}

   

NON-TERMINALS

start ::=
file ::= ( <SEC_START> section <SEC_END> )* <FILE_EOF>
section ::= sectionHeader
| sectionClasses
| sectionTables
| sectionBlocks
| sectionEntities
| sectionObjects
| sectionThumbs
// Section HEADER --------------------------------------------------------------
sectionHeader ::= <S_HEADER> ( variable )*
variable ::= <TOKEN_9> ( <TOKEN_X> )*
// Section CLASSES -------------------------------------------------------------
sectionClasses ::= <S_CLASSES> ( aClass )*
aClass ::= <TOKEN_0> ( <TOKEN_X> )*
// Section TABLES  -------------------------------------------------------------
sectionTables ::= <S_TABLES> ( tableStart ( tableEntry )* tableEnd )*
tableStart ::= <TABLE_START> ( <TOKEN_X> )*
tableEnd ::= <TABLE_END> ( <TOKEN_X> )*
tableEntry ::= <TOKEN_0> ( <TOKEN_9> | <TOKEN_X> )*
// Section BLOCKS --------------------------------------------------------------
sectionBlocks ::= <S_BLOCKS> ( blockStart ( entity )* blockEnd )*
blockStart ::= <BLK_START> ( <TOKEN_X> )*
blockEnd ::= <BLK_END> ( <TOKEN_X> )*
// Section ENTITIES ------------------------------------------------------------
sectionEntities ::= <S_ENTITIES> ( entity )*
entity ::= <TOKEN_0> ( <TOKEN_X> )*
// Section OBJECTS -------------------------------------------------------------
sectionObjects ::= <S_OBJECTS> ( anObject )*
anObject ::= <TOKEN_0> ( <TOKEN_9> | <TOKEN_X> )*
// Section THUMBS --------------------------------------------------------------
sectionThumbs ::= <S_THUMBS> thumb
thumb ::= <TOKEN_X> ( <TOKEN_X> )*