diff options
Diffstat (limited to 'grammar/go/insert-semi.lm')
-rw-r--r-- | grammar/go/insert-semi.lm | 111 |
1 files changed, 0 insertions, 111 deletions
diff --git a/grammar/go/insert-semi.lm b/grammar/go/insert-semi.lm deleted file mode 100644 index 3271216a..00000000 --- a/grammar/go/insert-semi.lm +++ /dev/null @@ -1,111 +0,0 @@ -lex - literal `var `if `then `else `while `do `for `read `write - `end `to `goto - - literal `:= `!= `+ `- `* `/ `= `( `) `: `; - - ignore /'//' [^\n]* '\n'/ - ignore /[\n\t ]+/ - - token id /[a-zA-Z_]+/ - token integer /[0-9]+/ - token stringlit /'"' [^"]* '"'/ - - token insert_semi / - ( ( id - - 'var' - 'if' - 'then' - 'else' - 'while' - - 'do' - 'for' - 'read' - 'write' - 'end' - - 'to' - 'goto' ) | - integer | stringlit | ')' ) '\n' / - { - Prefix: str = input->pull( match_length - 1 ) - input->push( ";" ) - input->push( Prefix ) - } - -end - -def program - [statement*] - -def statement - [declaration] -| [assignment_statement] -| [if_statement] -| [while_statement] -| [do_statement] -| [for_statement] -| [read_statement] -| [write_statement] -| [labelled_statement] -| [goto_statement] - -def declaration - [`var id `;] - -def assignment_statement - [id `:= expression `;] - -def if_statement - [`if expression `then statement* opt_else_statement `end] - -def opt_else_statement - [`else statement*] -| [] - -def while_statement - [`while expression `do statement* `end] - -def do_statement - [`do statement* `while expression `;] - -def for_statement - [`for id `:= expression `to expression `do statement* `end] - -def read_statement - [`read id `;] - -def write_statement - [`write expression `;] - -def expression - [term] -| [expression eqop term] - -def eqop [`=] | [`!=] - -def term - [factor] -| [term addop factor] - -def addop [`+] | [`-] - -def factor - [primary] -| [factor mulop primary] - -def mulop [`*] | [`/] - -def primary - [id] -| [lit] -| [`( expression `)] - -def lit - [integer] -| [stringlit] - -def labelled_statement - [id `: statement] - -def goto_statement - [`goto id `;] - -parse P: program[stdin] - -if P - print[ P ] -else { - print "[error] - exit( 1 ) -} |