Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)
On Thu, 15 Jul 2010, dmitry boyarintsev wrote: On Tue, Jul 13, 2010 at 12:42 PM, Michael Van Canneyt mich...@freepascal.org wrote: 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; um... I guess fpexprpars.pp could (should) be used with passrc in this case?! You can't do this easily, because the scanners are not compatible. You'd have to write a scanner wrapper. anyway, I've the patch for the current parser: http://bugs.freepascal.org/view.php?id=16931 I have seen it, I will look at it today. Michael. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)
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
Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)
In our previous episode, Paul Nicholls said: 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? I had bit of a look browsing the SVN online, but no luck... That one is in packages/fcl-base, and another is in packages/symbolic ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
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. ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)
- 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? I had bit of a look browsing the SVN online, but no luck... cheers, Paul ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal
[fpc-pascal] fpc-passrc expression parser (issue #16914)
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 would like to hear your ideas. 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))] ___ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal