<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body><div>Hi Silvio,<br></div>
<div> </div>
<div>About this parsing subject maybe looking at BeniBela Xidel and InternetTools help you or talking to Benito Aurthur of them.<br></div>
<div>He is a very good developer and kind person like you.<br></div>
<div><a href="http://videlibri.sourceforge.net/xidel.html">http://videlibri.sourceforge.net/xidel.html</a><br></div>
<div><a href="http://www.benibela.de/sources_en.html#internettools">http://www.benibela.de/sources_en.html#internettools</a><br></div>
<div> </div>
<div id="sig12586409"><div class="signature">Ara<br></div>
</div>
<div> </div>
<div> </div>
<div>On Fri, Mar 6, 2015, at 10:15 AM, Kostas Michalopoulos wrote:<br></div>
<blockquote type="cite"><div dir="ltr"><div><div>This is a classic series of articles that show how to write a very simple compiler in Turbo Pascal. The fundamentals when it comes to scanning are the same:<br></div>
<div> </div>
<div><a href="http://compilers.iecc.com/crenshaw/">http://compilers.iecc.com/crenshaw/</a><br></div>
<div> </div>
<div>I've also written a BASIC implementation for Free Pascal and Lazarus. The scanner should be straightforward to understand:<br></div>
<div> </div>
<div><a href="http://runtimelegend.com/rep/rbasic/artifact/2350e85c36a77e4d2d76adde23fd7d45731b5b22">http://runtimelegend.com/rep/rbasic/artifact/2350e85c36a77e4d2d76adde23fd7d45731b5b22</a><br></div>
<div> </div>
</div>
<div>The compiler code shows how it can be used:<br></div>
<div><a href="http://runtimelegend.com/rep/rbasic/artifact/93859f52fd424edfc1e0d5dfd16a92ed8ac04855">http://runtimelegend.com/rep/rbasic/artifact/93859f52fd424edfc1e0d5dfd16a92ed8ac04855</a><br></div>
<div> </div>
<div>But you may also find the formatter code simpler. Although it is a bit too simple:<br></div>
<div><a href="http://runtimelegend.com/rep/rbasic/artifact/f3e9fb2d1ed8e60d36b50754c2d9a7d7c109fc40">http://runtimelegend.com/rep/rbasic/artifact/f3e9fb2d1ed8e60d36b50754c2d9a7d7c109fc40</a><br></div>
<div> </div>
<div>For general theory you can look on recursive descent parsers (they're the simplest to implement and AFAIK most compilers use them, either to build the token list or directly).<br></div>
<div> </div>
</div>
<div><div> </div>
<div><div>On Fri, Mar 6, 2015 at 6:55 PM, silvioprog <span dir="ltr"><<a href="mailto:silvioprog@gmail.com" target="_blank">silvioprog@gmail.com</a>></span> wrote:<br></div>
<blockquote style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div>Hello,<br></div>
<div> </div>
<div>I'm planning to write three parsers, and googling, I found some entries talking about lexical parsers.<br></div>
<div> </div>
<div>After that, I did a 'find in files' in FPC sources, and I found many parsers (eg: jsonparser (jsonscanner), JSParser (JSScanner), fpsqlparser (fpsqlscanner), PParser (PScanner), fpexprpars etc.) that use lexical scanner.<br></div>
<div><div> </div>
<div>Below, three possible string that I need to parse:<br></div>
<div> </div>
<div>1)<br></div>
<div> </div>
<div>${someVariable} -- 4 tokens<br></div>
<div> </div>
<div>or<br></div>
<div> </div>
<div>${a + b} -- 8 tokens - 1 expression<br></div>
<div> </div>
<div>or<br></div>
<div> </div>
<div>${fn:lenght('abc') * 3} -- 11 tokens - 1 function - 1 expression<br></div>
<div> </div>
<div>2)<br></div>
<div> </div>
<div><div><c:forEach var="contact" items="${contactDao.list}"><br></div>
<div>    ${<a href="http://contato.name" target="_blank">contato.name</a>}, ${contato.email}<br></div>
<div></c:forEach><br></div>
</div>
<div> </div>
<div>3)<br></div>
<div> </div>
<div>contacts[0].name=abc<br></div>
<div>contacts[0].email=abc@def<br></div>
<div><div>contacts[1].name=def<br></div>
<div>contacts[2].email=def@ghi<br></div>
</div>
<div> </div>
<div>So my parser will allow to register dynamic variables, functions (to be called via script) and plugins (to extend the parser).<br></div>
<div> </div>
<div>However, I have a question: is there any article about 'how to write lexical parsers' using Object Pascal?<br></div>
<div> </div>
<div>I need any material about this subject, and I'm very grateful for any tip.<br></div>
<div> </div>
<div>Thanks in advance!<br></div>
<div> </div>
<div> </div>
<div><span><span style="color:rgb(136, 136, 136)" class="colour">-- </span></span><br></div>
<div> </div>
<div><span><span style="color:rgb(136, 136, 136)" class="colour">Silvio Clécio</span></span><br></div>
<div><span><span style="color:rgb(136, 136, 136)" class="colour">My public projects - <a href="http://github.com/silvioprog" target="_blank">github.com/silvioprog</a></span></span><br></div>
<div> </div>
</div>
</div>
<div> </div>
<div>--<br></div>
<div>_______________________________________________<br></div>
<div>Lazarus mailing list<br></div>
<div><a href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a><br></div>
<div><a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus" target="_blank">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a><br></div>
<div> </div>
</blockquote></div>
<div> </div>
</div>
<div>--<br></div>
<div><u>_______________________________________________</u><br></div>
<div>Lazarus mailing list<br></div>
<div><a href="mailto:Lazarus@lists.lazarus.freepascal.org">Lazarus@lists.lazarus.freepascal.org</a><br></div>
<div><a href="http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus">http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus</a><br></div>
</blockquote><div> </div>
<pre>
-- 
http://www.fastmail.com - The professional email service
</pre>
</body>
</html>