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
