Permalink
Find file
Fetching contributors…
Cannot retrieve contributors at this time
52 lines (34 sloc) 1.31 KB
Program ::= <Block>*
Block ::= <Head> ":" <NewLine>+ (<Indentation> <Block>)+
| <Line> <NewLine>+
| <IfBlock>
| <TryBlock>
IfBlock ::= "if" <Space> <Line> ":" <NewLine>+ (<Indentation> <Block>)+
("elseif" <Space> <Line> ":" <NewLine>+ (<Indentation> <Block>)+)*
("else" <Space>? ":" <NewLine>+ (<Indentation> <Block>)+)?
TryBlock ::= "try" <Space>* ":" <NewLine>+ (<Indentation> <Block>)+
("catch" <Space> <ProperWord> ":" <NewLine>+ (<Indentation> <Block>)+)*
Head ::= "while" <Space> <Line>
| "for" <Space> <ProperWord> (<Space> <Line>)? <Space>?
| "repeat" <Space> <Line>
| "func" <Space> <ProperWord> <Arguments>
| "local" <Space> <ProperWord> <Arguments>
| "labda" <Arguments>
| <ProperWord> <Arguments>
Indentation ::= <Tab>*
Line ::= (<Word> (<Space> <Word>)*)? <Space>?
Arguments ::= (<Space> <ProperWord>)* <Space>?
Space ::= " "+
Word ::= ProperWord
| Identity
| String
| Number
| Fraction
Identity ::= ":" <ProperWord>?
ProperWord ::= <Char>+
String ::= '"' <StringChar>* '"'
Number ::= '-'? <Digits> ('.' <Digits>)?
Fraction ::= '-'? <Digits> '/' <Digits>
Digits ::= ('0'..'9')+
Char ::= any non-whitespace, non-# character
StringChar ::= any character other than a double quote