Re: [fpc-pascal] fpc-passrc expression parser (issue #16914)

2010-07-15 Thread Michael Van Canneyt



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)

2010-07-14 Thread Michael Van Canneyt



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)

2010-07-14 Thread Marco van de Voort
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)

2010-07-13 Thread Michael Van Canneyt



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)

2010-07-13 Thread Paul Nicholls
- 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)

2010-07-12 Thread dmitry boyarintsev
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