On Wed, 14 Jul 2010, Paul Nicholls wrote:
----- Original Message ----- From: "Michael Van Canneyt"
<mich...@freepascal.org>
To: "FPC-Pascal users discussions" <fpc-pascal@lists.freepascal.org>
Sent: Tuesday, July 13, 2010 6:42 PM
Subject: Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)
On Tue, 13 Jul 2010, dmitry boyarintsev wrote:
Hello, Michael Van Canneyt,
Sorry, I can't write to the resolved issue (without re-opening) it.
- better class tree (split out binary/unary/primitive operators in
subclasses)
These may break backwards compatiblity; if you prefer to do them
yourself, I can say what I have in mind.
That's how it was originally written. However, I personally prefer to
keep less subclasses.
I prefer more, with less fields, it saves memory on big expressions :-)
I would like to hear your ideas.
Well, at least I would have expected 4 subclasses:
TPasExpr
+-- TUnaryExpr (field operand)
+-- TBinaryExpr (fields left, right)
+-- TPrimitiveExpr (field 'value')
+-- TFunctionCallExpr (fields value/params)
I must say that I am not familiar with the parsing style you used. I wrote
2 expression parsers meanwhile, and both used a different style. (see
fcl-base/fpexprpars.pp; the other one is in fcl-js. A third will follow in
the sql parser I'm about to commit)
thanks,
dmitry
P.S.. the expression parser still doesn't resolve ranges (i.e. in
sets), neither simple nor complex, like:
Char(6) in [Char(sizeof(Integer))..Char(SizeOf(int64))]
That should be relatively easy to add, no ?
Michael.
Hi all,
I am interested in expression parsers myself :)
Where can I find the code for "fpexprpars.pp" and other fpc parsing code like
that?
it is in fcl-base/src ?
the JavaScript scanner/parser is in fcl-js/src
the Pascal scanner/parser is in fcl-passrc/src
The SQL one will be in fcl-db/src/sql
You need trunk for this.
Michael.
_______________________________________________
fpc-pascal maillist - fpc-pascal@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-pascal