summaryrefslogtreecommitdiff
path: root/grammar/go/insert-semi.lm
diff options
context:
space:
mode:
Diffstat (limited to 'grammar/go/insert-semi.lm')
-rw-r--r--grammar/go/insert-semi.lm111
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 )
-}