List all possibilities using '??' operator.

parent 090b9861
...@@ -50,7 +50,7 @@ class Parser(BisonParser): ...@@ -50,7 +50,7 @@ class Parser(BisonParser):
# ---------------------------------------------------------------- # ----------------------------------------------------------------
# TODO: add a runtime check to verify that this token list match the list # TODO: add a runtime check to verify that this token list match the list
# of tokens of the lex script. # of tokens of the lex script.
tokens = ['NUMBER', 'IDENTIFIER', tokens = ['NUMBER', 'IDENTIFIER', 'POSSIBILITIES',
'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'POW', 'PLUS', 'MINUS', 'TIMES', 'DIVIDE', 'POW',
'LPAREN', 'RPAREN', 'COMMA', 'HINT', 'REWRITE', 'LPAREN', 'RPAREN', 'COMMA', 'HINT', 'REWRITE',
'NEWLINE', 'QUIT', 'RAISE', 'GRAPH'] 'NEWLINE', 'QUIT', 'RAISE', 'GRAPH']
...@@ -203,6 +203,7 @@ class Parser(BisonParser): ...@@ -203,6 +203,7 @@ class Parser(BisonParser):
| exp NEWLINE | exp NEWLINE
| debug NEWLINE | debug NEWLINE
| HINT NEWLINE | HINT NEWLINE
| POSSIBILITIES NEWLINE
| REWRITE NEWLINE | REWRITE NEWLINE
| RAISE NEWLINE | RAISE NEWLINE
""" """
...@@ -214,10 +215,14 @@ class Parser(BisonParser): ...@@ -214,10 +215,14 @@ class Parser(BisonParser):
return return
if option == 4: if option == 4:
print '\n'.join(map(str, self.last_possibilities))
return
if option == 5:
suggestion = pick_suggestion(self.last_possibilities) suggestion = pick_suggestion(self.last_possibilities)
return apply_suggestion(suggestion) return apply_suggestion(suggestion)
if option == 5: if option == 6:
raise RuntimeError('on_line: exception raised') raise RuntimeError('on_line: exception raised')
def on_debug(self, target, option, names, values): def on_debug(self, target, option, names, values):
...@@ -345,6 +350,7 @@ class Parser(BisonParser): ...@@ -345,6 +350,7 @@ class Parser(BisonParser):
"^" { returntoken(POW); } "^" { returntoken(POW); }
"/" { returntoken(DIVIDE); } "/" { returntoken(DIVIDE); }
"," { returntoken(COMMA); } "," { returntoken(COMMA); }
"??" { returntoken(POSSIBILITIES); }
"?" { returntoken(HINT); } "?" { returntoken(HINT); }
"@" { returntoken(REWRITE); } "@" { returntoken(REWRITE); }
"quit" { yyterminate(); returntoken(QUIT); } "quit" { yyterminate(); returntoken(QUIT); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment