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>