[egenix-users] Help needed for context object in mxTextTools 2.1.0
Pekka Niiranen
krissepu at vip.fi
Sun Aug 11 23:08:09 CEST 2002
Hi,
I am currently perfecting my parser by
trying to add error messages to it.
I found error messages mentioned in documentation
were context object were explained, but had problems
understanding what is meant with "context".
If I understood correctly I should be able to:
1) instead of saying "MatchFail", jump to a location
were I call python function that prints Errortext first and
only then call "MatchFail".
2) set flag that tells I am recursing at the moment and at error
check flag and print messages according to flags' value.
a) Should I use Call or CallTag -function ?
b) What is the difference of adding Python function to tag() -command
instead of using CallTag ?
c) should I use mxStack instead of a python variable for the flag ? This
is a speed issue.
d) Merging error printing with mxTextTools C-engine's MatchFail -state.
Possible ?
---code starts ---
NOTE: IF-ELSE -structure can (and must ?) be implemented with jumps.
from mx.TextTools import *
text = "Xaa(AA)a((BB))aa((CC)DD)aa(EE(FF))aa(GG(HH(II)JJ)KK)aaY"
tables = []
tab = ('start',
(None, AllNotIn,'()', +1),
(None, Is+LookAhead, '(', "IF FLAG IS NOT SET PRINT ERROR
'SPURIOUS )-SIGN' and MatchFail"\
ELSE UNSET FLAG and
MatchOk", 'nesting'),
'nesting',
"SET FLAG ON",
('group',SubTable+AppendMatch,((None, Is, '(', +1),
(None, SubTableInList, (tables,0)),
(None, Is, ')', "PRINT ERROR
'SPURIOUS (-SIGN' and MatchFail", MatchOk))),
(None,Jump,To,'start'))
tables.append(tab) # Add tab to tables
if __name__ == '__main__':
result, taglist, nextindex = tag(text,tab)
print taglist
--code stops---
-pekka-
More information about the egenix-users
mailing list