"""Re-written version of simpleexample for 2.0
Shows use of Parser to check syntax of declaration and
test that a particular production is matching what we
expect it to match...
"""
from simpleparse.common import numbers,strings,comments
declaration = r'''# note use of raw string when embedding in python code...
file := [ \t\n]*, section+
section := '[',identifier,']', ts,'\n', body
body := statement*
statement := (ts,semicolon_comment)/equality/nullline
nullline := ts,'\n'
equality := ts, identifier,ts,'=',ts,identified,ts,'\n'
identifier := [a-zA-Z], [a-zA-Z0-9_]*
identified := string/number/identifier
ts := [ \t]*
'''
from simpleparse.parser import Parser
parser = Parser( declaration )
testEquality = [
"s=3\n",
"s = 3\n",
''' s="three\\nthere"\n''',
''' s=three\n''',
]
production = "equality"
if __name__ =="__main__":
for testData in testEquality:
success, children, nextcharacter = parser.parse( testData, production=production)
assert success and nextcharacter==len(testData), """Wasn't able to parse %s as a %s (%s chars parsed of %s), returned value was %s"""%( repr(testData), production, nextcharacter, len(testData), (success, children, nextcharacter))
|