[Lazarus] How to write an eficient lexical scanner/parser?

silvioprog silvioprog at gmail.com
Fri Mar 6 18:55:52 CET 2015


Hello,

I'm planning to write three parsers, and googling, I found some entries
talking about lexical parsers.

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.

Below, three possible string that I need to parse:

1)

${someVariable} -- 4 tokens

or

${a + b} -- 8 tokens - 1 expression

or

${fn:lenght('abc') * 3} -- 11 tokens - 1 function - 1 expression

2)

<c:forEach var="contact" items="${contactDao.list}">
    ${contato.name}, ${contato.email}
</c:forEach>

3)

contacts[0].name=abc
contacts[0].email=abc at def
contacts[1].name=def
contacts[2].email=def at ghi

So my parser will allow to register dynamic variables, functions (to be
called via script) and plugins (to extend the parser).

However, I have a question: is there any article about 'how to write
lexical parsers' using Object Pascal?

I need any material about this subject, and I'm very grateful for any tip.

Thanks in advance!

-- 
Silvio Clécio
My public projects - github.com/silvioprog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus/attachments/20150306/4e518192/attachment-0002.html>


More information about the Lazarus mailing list