117 lines
3.7 KiB
Plaintext
117 lines
3.7 KiB
Plaintext
LL(1) for nasal
|
|
|
|
number -> NUMBER
|
|
id -> IDENTIFIER
|
|
string -> STRING
|
|
|
|
scalar -> number
|
|
scalar -> id
|
|
scalar -> identifier
|
|
scalar -> calculation
|
|
scalars -> scalar scalar_end
|
|
scalar_end -> , scalar scalar_end
|
|
scalar_end -> $
|
|
|
|
lacked_identifier -> id = scalar
|
|
lacked_identifier -> id = string
|
|
lacked_identifier -> id = function
|
|
identifier -> id [ scalar ]
|
|
identifier -> id . identifier
|
|
identifier -> id [ scalar : scalar ]
|
|
identifier -> id [ scalar : ]
|
|
identifier -> id ( )
|
|
identifier -> id ( scalar )
|
|
identifier -> id ( scalars )
|
|
identifiers -> identifier identifier_end
|
|
identifier_end -> , identifier identifier_end
|
|
identifier_end -> $
|
|
|
|
definition -> var id = scalar ;
|
|
definition -> var id = string ;
|
|
definition -> var id = function ;
|
|
|
|
pre_assignment -> id =|+=|-=|*=|\=|~= scalar
|
|
pre_assignment -> id =|+=|-=|*=|\=|~= string
|
|
pre_assignment -> identifier =|+=|-=|*=|\=|~= scalar
|
|
pre_assignment -> identifier =|+=|-=|*=|\=|~= string
|
|
assignment -> pre_assignment ;
|
|
|
|
parameter -> identifier
|
|
parameter -> lacked_identifier
|
|
parameters -> parameter parameter_end
|
|
parameter_end -> ,identifier parameter_end
|
|
parameter_end -> ,lacked_identifier parameter_end
|
|
parameter_end -> $
|
|
function -> func { }
|
|
function -> func { statement }
|
|
function -> func { statements }
|
|
function -> func ( ) { }
|
|
function -> func ( ) { statement }
|
|
function -> func ( ) { statements }
|
|
function -> func ( parameter ) { }
|
|
function -> func ( parameter ) { statement }
|
|
function -> func ( parameter ) { statements }
|
|
function -> func ( parameters ) { }
|
|
function -> func ( parameters ) { statement }
|
|
function -> func ( parameters ) { statements }
|
|
|
|
calculation -> scalar + scalar
|
|
calculation -> scalar - scalar
|
|
calculation -> scalar * scalar
|
|
calculation -> scalar \ scalar
|
|
calculation -> scalar ~ scalar
|
|
calculation -> scalar == scalar
|
|
calculation -> scalar != scalar
|
|
calculation -> scalar > scalar
|
|
calculation -> scalar >= scalar
|
|
calculation -> scalar < scalar
|
|
calculation -> scalar <= scalar
|
|
calculation -> scalar and scalar
|
|
calculation -> scalar or scalar
|
|
calculation -> ! scalar
|
|
calculation -> scalar ? scalar : scalar
|
|
calculation -> (calculation)
|
|
calculation -> (scalar)
|
|
|
|
loop -> for ( definition calculation ; pre_assignment) { }
|
|
loop -> for ( definition calculation ; pre_assignment) statement
|
|
loop -> for ( definition calculation ; pre_assignment) { statement }
|
|
loop -> for ( definition calculation ; pre_assignment) { statements }
|
|
loop -> forindex ( id ; id|identifier) { }
|
|
loop -> forindex ( id ; id|identifier) statement
|
|
loop -> forindex ( id ; id|identifier) { statement }
|
|
loop -> forindex ( id ; id|identifier) { statements }
|
|
loop -> foreach ( id ; id|identifier) { }
|
|
loop -> foreach ( id ; id|identifier) statement
|
|
loop -> foreach ( id ; id|identifier) { statement }
|
|
loop -> foreach ( id ; id|identifier) { statements }
|
|
loop -> while ( scalar ) { }
|
|
loop -> while ( scalar ) statement
|
|
loop -> while ( scalar ) { statement }
|
|
loop -> while ( scalar ) { statements }
|
|
|
|
if_choose -> if ( scalar ) { }
|
|
if_choose -> if ( scalar ) statement
|
|
if_choose -> if ( scalar ) { statement }
|
|
if_choose -> if ( scalar ) { statements }
|
|
else_if_choose -> else if { }
|
|
else_if_choose -> else if statement
|
|
else_if_choose -> else if { statement }
|
|
else_if_choose -> else if { statements }
|
|
else_if_choose -> elsif { }
|
|
else_if_choose -> elsif statement
|
|
else_if_choose -> elsif { statement }
|
|
else_if_choose -> elsif { statements }
|
|
else_choose -> else { }
|
|
else_choose -> else statement
|
|
else_choose -> else { statement }
|
|
else_choose -> else { statements }
|
|
|
|
mul_else_if -> else_if_choose mul_else_if
|
|
mul_else_if -> $
|
|
|
|
choose -> if_choose
|
|
choose -> if_choose mul_else_if
|
|
choose -> if_choose else_choose
|
|
choose -> if_choose mul_else_if else_choose
|