<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Recent changes to feature-requests</title><link>https://sourceforge.net/p/parserbuilder/feature-requests/</link><description>Recent changes to feature-requests</description><atom:link href="https://sourceforge.net/p/parserbuilder/feature-requests/feed.rss" rel="self"/><language>en</language><lastBuildDate>Thu, 13 Oct 2005 09:34:40 -0000</lastBuildDate><atom:link href="https://sourceforge.net/p/parserbuilder/feature-requests/feed.rss" rel="self" type="application/rss+xml"/><item><title>ANSI support in scanner</title><link>https://sourceforge.net/p/parserbuilder/feature-requests/3/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Now genereted scanner use function "UpCase", that not &lt;br /&gt;
support ANSI. Please, can you change it on &lt;br /&gt;
"AnsiUpperCase" for this?&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Sonic</dc:creator><pubDate>Thu, 13 Oct 2005 09:34:40 -0000</pubDate><guid>https://sourceforge.net1a599b1ebcd0dd0788a94b9b689b8a4714facf2b</guid></item><item><title>output speed up</title><link>https://sourceforge.net/p/parserbuilder/feature-requests/2/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;If you swap &lt;/p&gt;
&lt;p&gt;fOutputStream : TStringStream;&lt;/p&gt;
&lt;p&gt;for &lt;/p&gt;
&lt;p&gt;fOuputList : TStringList;&lt;/p&gt;
&lt;p&gt;and just add the text lines onto the stringlist, then&lt;br /&gt;
text output takes roughly 3% or less of the time needed&lt;br /&gt;
with the TStreamString.  For what I'm doing, where I&lt;br /&gt;
write out entering and exiting every production and&lt;br /&gt;
before I check and then again if I found a production,&lt;br /&gt;
my throughput went from around 8-10 lines per second to&lt;br /&gt;
finishing a 2000+ line file in less than a half a&lt;br /&gt;
second with all output turned on.  To get to all the&lt;br /&gt;
text quickly, just use &lt;br /&gt;
Memo1.Text := fOutputList.Text;&lt;br /&gt;
You don't have to add #13#10 to the strings, each added&lt;br /&gt;
one gets it's own line.&lt;br /&gt;
Thanks&lt;br /&gt;
RM&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Richard Mustakos</dc:creator><pubDate>Sat, 31 May 2003 05:17:51 -0000</pubDate><guid>https://sourceforge.net60aceb55ba9c75f38016881ec09ab6ffb9c03ae9</guid></item><item><title>grammere debugging code</title><link>https://sourceforge.net/p/parserbuilder/feature-requests/1/</link><description>&lt;div class="markdown_content"&gt;&lt;p&gt;Interested in adding a few features.&lt;br /&gt;
1) automatic generation of messages for&lt;br /&gt;
entering production&lt;br /&gt;
checking production&lt;br /&gt;
found production&lt;br /&gt;
exiting production&lt;br /&gt;
2) check boxes to turn generation of these on &amp;amp;amp; off&lt;br /&gt;
3) properties in parser to turn message printing on &amp;amp;amp; off&lt;/p&gt;
&lt;p&gt;Putting the ProductionCheck in is not redundant with&lt;br /&gt;
the ProductionStart because (it looks like) some tokens&lt;br /&gt;
are checked without going into the production.&lt;br /&gt;
I am currently (Lord help me) manually putting these&lt;br /&gt;
into the the semantic actions for each and every line:&lt;/p&gt;
&lt;p&gt;Production1 = &lt;br /&gt;
(. ProductionStart( 'Production1'); .)&lt;br /&gt;
(   (. ProductionCheck( 'Production2'); .)&lt;br /&gt;
Production2&lt;br /&gt;
(. ProductionFound('Production2'); .)&lt;br /&gt;
) |&lt;br /&gt;
(   (. ProductionCheck( 'Production3'); .)&lt;br /&gt;
Production3&lt;br /&gt;
(. ProductionFound('Production3'); .)&lt;br /&gt;
)&lt;br /&gt;
(. ProductionEnd; .)&lt;br /&gt;
.&lt;br /&gt;
Ad Naueseum&lt;br /&gt;
I know it's only 4 lines of code to fix this.  I even&lt;br /&gt;
know the four lines that are required (12 to 16 with&lt;br /&gt;
IDE support for turning on&amp;amp;amp;off).  I just am not&lt;br /&gt;
familiar enough with the project to know  where to put&lt;br /&gt;
them.&lt;/p&gt;
&lt;p&gt;I've also fat-finger automated the production of a&lt;br /&gt;
file that parallels --&amp;amp;gt;grammermoduleG.pas.  I take the&lt;br /&gt;
token IDs and wrap them as strings, putting them in an&lt;br /&gt;
array so that I can print out the string associated&lt;br /&gt;
with the expected token when I don't get it.&lt;br /&gt;
There is Property support given below for turning&lt;br /&gt;
that on and off, as well as for printing the token&lt;br /&gt;
input string and name string (from array above) in &lt;br /&gt;
PerformGet:&lt;/p&gt;
&lt;p&gt;if PrintTokens then WriteStr( GetLexString + ' '&lt;br /&gt;
+GetNextString + ' ' + SymbolText[sym]);&lt;/p&gt;
&lt;p&gt;Where GetLexString and GetNextString just made&lt;br /&gt;
functions out of existing procedures.&lt;/p&gt;
&lt;p&gt;In  Expect:&lt;/p&gt;
&lt;p&gt;if PrintExpected then ProductionComment('Expect:&lt;br /&gt;
'+SymbolText[n] + ' Got: ' + SymbolText[sym]);&lt;/p&gt;
&lt;p&gt;Hope this isn't too wordy.&lt;br /&gt;
Thanks&lt;/p&gt;
&lt;p&gt;The actual message printing procedures &amp;amp;amp; support:&lt;br /&gt;
---------------------------------------------------------------------------------&lt;br /&gt;
fPrintChecks : boolean;&lt;br /&gt;
fPrintFound : boolean;&lt;br /&gt;
fPrintProds : boolean;&lt;br /&gt;
fIndent     : boolean;&lt;br /&gt;
fPrintTkns  : boolean;&lt;br /&gt;
fPrintXpctd : boolean;&lt;br /&gt;
fStrLst : TStringList;&lt;br /&gt;
fProdStack : TStringList;&lt;br /&gt;
fLevel : integer;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
procedure ProductionStart( str : string );&lt;br /&gt;
procedure ProductionComment( str : string );&lt;br /&gt;
procedure ProductionCheck( str : string );&lt;br /&gt;
procedure ProductionFound( str : string );&lt;br /&gt;
procedure ProductionEnd;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Property PrintChecks : boolean read fPrintChecks&lt;br /&gt;
write  fPrintChecks;&lt;br /&gt;
Property PrintFound  : boolean read fPrintFound &lt;br /&gt;
write  fPrintFound  ;&lt;br /&gt;
Property PrintProds  : boolean read fPrintProds &lt;br /&gt;
write  fPrintProds  ;&lt;br /&gt;
Property PrintIndent : boolean read fIndent   &lt;br /&gt;
write  fIndent      ;&lt;br /&gt;
Property PrintTokens : boolean read fPrintTkns&lt;br /&gt;
write  fPrintTkns ;&lt;br /&gt;
Property PrintExpected: boolean read fPrintXpctd&lt;br /&gt;
write fPrintXpctd ;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;br /&gt;
Procedure T--&amp;amp;gt;modulenameParser.ProductionStart( str :&lt;br /&gt;
string );&lt;br /&gt;
Begin&lt;br /&gt;
if fProdStack.Capacity &amp;amp;lt;= fLevel then&lt;br /&gt;
fProdStack.Capacity := fLevel * 2;&lt;br /&gt;
while fLevel &amp;amp;gt;= fProdStack.Count do&lt;br /&gt;
fProdStack.Add('' );&lt;br /&gt;
fProdStack[fLevel] := str;&lt;br /&gt;
if PrintProds then ProductionComment(&lt;br /&gt;
fProdStack[fLevel] + ' --&amp;amp;gt;' );&lt;br /&gt;
inc(fLevel);&lt;br /&gt;
End;&lt;/p&gt;
&lt;p&gt;Procedure T--&amp;amp;gt;modulenameParser.ProductionComment( str :&lt;br /&gt;
string );&lt;br /&gt;
var&lt;br /&gt;
s : string;&lt;br /&gt;
i : integer;&lt;br /&gt;
Begin&lt;br /&gt;
s := '' ;&lt;br /&gt;
if PrintIndent then i := fLevel else i := 0;&lt;br /&gt;
while i &amp;amp;gt; 25 do&lt;br /&gt;
begin&lt;br /&gt;
s := s+'                         ' ;&lt;br /&gt;
dec(i,25);&lt;br /&gt;
end;&lt;br /&gt;
while i &amp;amp;gt; 5 do&lt;br /&gt;
begin&lt;br /&gt;
s := s+'     ' ;&lt;br /&gt;
dec(i, 5);&lt;br /&gt;
end;&lt;br /&gt;
while i &amp;amp;gt; 0 do&lt;br /&gt;
begin&lt;br /&gt;
s := s+' ' ;&lt;br /&gt;
dec(i);&lt;br /&gt;
end;&lt;br /&gt;
s := s + str;&lt;br /&gt;
WriteStr(s);&lt;br /&gt;
End;&lt;/p&gt;
&lt;p&gt;Procedure T--&amp;amp;gt;modulenameParser.ProductionCheck( str :&lt;br /&gt;
string );&lt;br /&gt;
begin&lt;br /&gt;
if PrintChecks then ProductionComment( 'in ' +&lt;br /&gt;
fProdStack[fLevel-1] + ' checking ' +str);&lt;br /&gt;
end;&lt;/p&gt;
&lt;p&gt;Procedure T--&amp;amp;gt;modulenameParser.ProductionFound( str :&lt;br /&gt;
string );&lt;br /&gt;
begin&lt;br /&gt;
if PrintFound then ProductionComment('in ' +&lt;br /&gt;
fProdStack[fLevel-1] + ' found ' + str);&lt;br /&gt;
end;&lt;/p&gt;
&lt;p&gt;Procedure T--&amp;amp;gt;modulenameParser.ProductionEnd;&lt;br /&gt;
Begin&lt;br /&gt;
dec(fLevel);&lt;br /&gt;
if PrintProds then ProductionComment(&lt;br /&gt;
fProdStack[fLevel] + ' &amp;amp;lt;--' );&lt;br /&gt;
Application.ProcessMessages;&lt;br /&gt;
End;&lt;br /&gt;
--------------------------------------------------------------------------------&lt;/p&gt;&lt;/div&gt;</description><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Richard Mustakos</dc:creator><pubDate>Sat, 31 May 2003 04:53:02 -0000</pubDate><guid>https://sourceforge.net426a9151e84a7b72ec84195549bc7bdcabedaba6</guid></item></channel></rss>