|
|
|
# lexer tests for things that are not implemented, or have non-compliant behaviour
|
|
|
|
|
|
|
|
|
|
|
|
def test(code):
|
|
|
|
try:
|
|
|
|
exec(code)
|
|
|
|
print("no Error")
|
|
|
|
except SyntaxError:
|
|
|
|
print("SyntaxError")
|
|
|
|
except NotImplementedError:
|
|
|
|
print("NotImplementedError")
|
|
|
|
|
|
|
|
|
|
|
|
# uPy requires spaces between literal numbers and keywords, CPy doesn't
|
|
|
|
try:
|
|
|
|
eval("1and 0")
|
|
|
|
except SyntaxError:
|
|
|
|
print("SyntaxError")
|
|
|
|
try:
|
|
|
|
eval("1or 0")
|
|
|
|
except SyntaxError:
|
|
|
|
print("SyntaxError")
|
|
|
|
try:
|
|
|
|
eval("1if 1else 0")
|
|
|
|
except SyntaxError:
|
|
|
|
print("SyntaxError")
|
|
|
|
try:
|
|
|
|
eval("1if 0else 0")
|
|
|
|
except SyntaxError:
|
|
|
|
print("SyntaxError")
|
|
|
|
|
|
|
|
# unicode name escapes are not implemented
|
|
|
|
test('"\\N{LATIN SMALL LETTER A}"')
|