2014-08-25 11:12 GMT+02:00 Usman Bhatti <usman.bhatti(a)gmail.com>om>:
I understand that context is important when parsing a program for certain
parsing related information.
In my case, I am using PetitParser more as a syntax highlighter on the
lines of PPTextHighlighter and in that case you dont need much of
contextual information. All you need is token positions. Can we envisage,
for such usage, a simplistic but more robust parser?
If you're more into that, then a lexer may be enough and a very efficient
one can be built with SmaCC.
What you're doing doesn't seems to require a parser: it is just matching
Keyword [^\n] *
isn't it?
Thierry
[|string allStyles text|
string := (PharoFilesOpener default changesFileOrNil contents copyFrom: 1
to: 60000).
text := string asText.
allStyles := {
'Announcement' -> TextColor green.
'Collections' -> TextColor blue.
'File' -> TextColor blue.
'Metacello' -> TextColor red.
'Monticello' -> TextColor magenta.
'Morphic' -> TextColor orange.
'Mooose' -> TextColor green.
'FAMIX' -> TextColor green.
'Roassal' -> TextColor green.
}.
allStyles do: [ :assoc | ((assoc key asParser, #newline asParser negate
star) matchingRangesIn: string) do: [:aRange | text addAttribute: (assoc
value) from: aRange first to: aRange last] ].
text] timeToRun ==> 15 sec