<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<meta charset="utf-8">
<span style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">>When I
evaluate:<span class="Apple-converted-space"> </span></span><br
style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<span style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">> parser :=
PEGParser parserPEG parse: 'Grammar' stream: PEGParser
grammarEmailAddress actor: PEGParserParser new.<span
class="Apple-converted-space"> </span></span><br style="color:
rgb(51, 51, 51); font-family: Verdana, Geneva, Helvetica, Arial,
sans-serif; font-size: 13.44px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<br style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<span style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">>I get:
KeyNotFound: key 'quotedstring' not found in Dictionary<span
class="Apple-converted-space"> </span></span><br style="color:
rgb(51, 51, 51); font-family: Verdana, Geneva, Helvetica, Arial,
sans-serif; font-size: 13.44px; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<br style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255);">
<span style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">>How am I
supposed to debug that to find the typo in my giant string above?!<br>
<br>
Hi Sean, </span><span style="color: rgb(51, 51, 51);
font-family: Verdana, Geneva, Helvetica, Arial, sans-serif;
font-size: 13.44px; font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal; font-weight: normal;
letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; white-space: normal;
widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); display: inline !important;
float: none;"><span style="color: rgb(51, 51, 51); font-family:
Verdana, Geneva, Helvetica, Arial, sans-serif; font-size:
13.44px; font-style: normal; font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: normal; letter-spacing:
normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; white-space: normal; widows: 2;
word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(255, 255, 255); display: inline
!important; float: none;"><span class="Apple-converted-space"></span></span><br>
<br>
Your error is saying is that there is no key called 'quotedstring'
in the dictionary in the grammar ivar of your parser. <br>
<br>
In each parser is a grammar ivar. It contains a dictionary. The
values of the dictionary are graphs of compiled blocks. Each node
of the graph is a block with arguments that are blocks that have
arguments that are blocks, etc. It's a graph of compiled blocks. <br>
<br>
Try this. Add in PEGParser class.<br>
<br>
grammar3Names<br>
" a grammar to create a parser to sort three names as per page 24
of Grune's book Parsing Techniques (1990)"<br>
<br>
^'Sentence <- NAME<br>
<br>
NAME <- "tom" / "dick" / "harry" <br>
'<br>
<br>
Now execute this.<br>
<br>
(PEGParser parserBootstrap) parse: 'Grammar' stream: PEGParser
grammar3Names reading actor: PEGParserGenerator new. <br>
<br>
That will show you the code that will create the dictionary in the
grammar ivar. Now make a change. <br>
</span><br>
<span style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;"><span
style="color: rgb(51, 51, 51); font-family: Verdana, Geneva,
Helvetica, Arial, sans-serif; font-size: 13.44px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps:
normal; font-weight: normal; letter-spacing: normal; orphans: 2;
text-align: start; text-indent: 0px; text-transform: none;
white-space: normal; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; background-color: rgb(255, 255,
255); display: inline !important; float: none;">myparser :=
(PEGParser parserBootstrap) parse: 'Grammar' stream: PEGParser
grammar3Names reading actor: PEGParserParser new. <br>
<br>
</span>You generated the parser, not the code for the parser. <br>
<br>
To use the parser. <br>
<br>
myparser parse: 'Sentence' stream: 'harry' reading actor: nil <br>
<br>
Now let's look at the same thing in three ways. <br>
<br>
PEGParser>>#grammarPEG this is the grammar<br>
PEGParser>>#parserBootstrap this is the code generated by
the PEGParserGenerator from grammarPEG<br>
PEGParser>>#parserPEG this is the parser returned by
PEGParserParser from grammarPEG<br>
<br>
You will see that PEGParser parserBootstrap and PEGParser
parserPEG are interchangeable anywhere. In fact, if the goal is to
populate the grammar ivar with a dictionary to make a parser, then
#parserPEG starts to grate on one's nerves, because you already
have what you need in the grammar ivar by evaluating PEGParser
parserBootstrap. #parserPEG compiles the grammarPEG using
PEGParserParser into the grammar ivar to make a parser, but it's
the exact same as what was already there. It's irritating. <br>
<br>
I'll release some examples in a package called Xtreamly some time
before Christmas to help start understanding Xtreams-Parsing.<br>
<br>
HTH, <br>
Chris <br>
<br>
</span>
</body>
</html>