BNF for IILC.jj

NON-TERMINALS

StringLiteral ::= <STRING_LITERAL>
IntegerLiteral ::= <INTEGER_LITERAL>
DisplayDecl ::= <DISPLAY> StringLiteral <USE> StringLiteral <LBRACE> ( DisplayBody )* <RBRACE>
DisplayBody ::= ScreenDecl
EntityTemp ::= <TEMP>
EntityLED ::= <LED>
EntityFan ::= <FAN>
Entity ::= EntityTemp
| EntityLED
| EntityFan
DefineDirective ::= <DEFINE> Entity IntegerLiteral <NAMED> StringLiteral
NumericPair ::= IntegerLiteral <COMMA> IntegerLiteral
Location ::= NumericPair
Dimension ::= NumericPair
ScreenDecl ::= <SCREEN> StringLiteral <LBRACE> ( WindowDecl )* <RBRACE>
WindowDecl ::= <SHOW> StringLiteral ( ( <SIZE> Dimension ( <AT> Location )? | <AT> Location ( <SIZE> Dimension )? ) )? <SEMICOLON>
DeviceClass ::= <CLASS> StringLiteral
DevicePort ::= <PORT> StringLiteral
ClassDirective ::= <CLASS> StringLiteral
ControlDirective ::= <CONTROL> StringLiteral StringLiteral
ReportDirective ::= <REPORT> StringLiteral StringLiteral
OptionDirective ::= <OPTION> StringLiteral StringLiteral
ModuleDecl ::= <MODULE> StringLiteral <CLASS> StringLiteral <LBRACE> ( ( ControlDirective | ReportDirective | DefineDirective | OptionDirective ) <SEMICOLON> )* <RBRACE>
ConfigFile ::= ( ModuleDecl | DisplayDecl )* <EOF>