[Newbies] How to approach this PEGParser Grammar Fix.

tty gettimothy at zoho.com
Thu Sep 5 15:25:25 UTC 2019


Slowly grokking the big picture.

A Gramamar is a bunch of PEG rules

in the grammarWiki (and now grammarMediaWiki) the "top rule" is

Page <- (Preformatted / Code / UnorderedList / OrderedList / Heading / Table
/ Paragraph / Empty)*

which is a a grouping of zero or more subrules. The rule for Preformatted
looks like this:

Preformatted <- "---\n" .{"---\n"} 


Now here is the neat thing.

In the PEGActor subclass for that grammar PEGWikiGenerator, there are a
bunch of methods. However, within many of those methods are PRAGMAS.

Here is the Preformatted method:


Preformatted: text

	<action: 'Preformatted' arguments: #(2)>
	<action: 'Code' arguments: #(2)>

	^self
		newElementTag: Preformatted
		elements: (Array with: (self newText: text))

See those pragmas? 
They match up exactly with the Grammar rules.

Somehow, something, parses the grammars and then goes looking in the Actor
for pragmas. When a pragma in a method matches a rule, then I "think" that a
block is stored in the PEGParser and when that rule is encountered during
the parse, that block is executed.







--
Sent from: http://forum.world.st/Squeak-Beginners-f107673.html


More information about the Beginners mailing list