Hi, Ron
I'm fine, many responsability, working with xHarbour.
Adding debug to parser I have this sequence:
*** New Macro: >>>(file_alias = $1)<<< Len: 17
Starting parse
Entering state 0
Reading a token:
Reducing Delimiter: '(' As: 40
Passing through: 40
Returning: 40
Next token is token '(' ()
Shifting token '(' ()
Entering state 23
Reading a token:
Checking 4 Streams for E At: >e_alias = $1)<
Token: "FILE_ALIAS" Ommited: ' '
Pre-Scaning Words for Token: FILE_ALIAS at Positions: 1-1
iLenMatch 10
iKeyLen: 5 iLen2Match: 10 comparing: [FILE_ALIAS] with: [FIELD?WS?->]
Trying Next Word Pattern... [FILE_ALIAS] > [FIELD?WS?->]
Continue with: [HAS]
Reducing Element: "FILE_ALIAS"
Element "FILE_ALIAS" is 258
Passing through: 258
Returning: 258
Next token is token IDENTIFIER ()
Shifting token IDENTIFIER ()
Entering state 86
Reducing stack by rule 8 (line 379):
$1 = token IDENTIFIER ()
-> $$ = nterm IdentName ()
Stack now 0 23
Entering state 26
Reading a token:
Checking 28 Selfs for = At: >= $1)<
Reducing Delimiter: '=' As: 1085
Returning Dont Reduce 61
Returning: 61
Next token is token '=' ()
Reducing stack by rule 30 (line 533):
$1 = nterm IdentName ()
-> $$ = nterm Variable ()
Stack now 0 23
Entering state 38
Next token is token '=' ()
Reducing stack by rule 109 (line 820):
$1 = nterm Variable ()
-> $$ = nterm SimpleExpression ()
Stack now 0 23
Entering state 57
Reducing stack by rule 126 (line 839):
$1 = nterm SimpleExpression ()
-> $$ = nterm Expression ()
Stack now 0 23
Entering state 106
Next token is token '=' ()
Shifting token '=' ()
Entering state 197
Reading a token:
Reducing Delimiter: '$' As: 1060
Returning Dont Reduce 36
Returning: 36
Next token is token '$' ()
Error: popping token '=' ()
Stack now 0 23 106
Error: popping nterm Expression ()
Stack now 0 23
Error: popping token '(' ()
Stack now 0
Shifting token error ()
Entering state 1
Reducing stack by rule 7 (line 359):
$1 = token error ()
Cleanup: discarding lookahead token '$' ()
Stack now 0
source\vm\fm.c:971: HB_TR_ERROR Block 1 00923AA8 (size 11) MAIN(10),
"FILE_ALIAS."
source\vm\fm.c:971: HB_TR_ERROR Block 2 00A5A2D0 (size 40) MAIN(10),
"A83A92000000000010D6E80000000000010002008000000000000000010000001A00000000000000"
Testing several expression to force error and reduce stack by rule 7, i
found that other expression free memory using s_Pending.
If code is:
file_alias = $1
the stack is reduced by rule 6
I test adding a rule
| '(' Expression error
similar to
| Expression error
and the parser reduce in this rule instead of rule
| error
and now no more memory leaks, but is this a correct solution?
Thank you
*Walter Negro*
Desarrollo e Investigación
VsTour - Softmagic S.R.L.
( 54 ) ( 11 ) 5218-6616
Av. Corrientes 2294 Piso 7 Of.33
C1046AAN - Buenos Aires - Argentina
wne...@vstour.com
--------------------------------------------------------------------------------
*:: VSTour.COM <http://www.vstour.com> :: *
2016-04-19 16:53 GMT-03:00 Ron Pinkas <ron.pin...@xharbour.com>:
> Hey Walter, :-)
>
> (How are you?)
>
> How much memory, and what is stored int it?
>
> We need to follow the EXPRESSION TREE, and find which element is not
> released.
>
> It should be a Parenthesized Exp, which has a single element, being an
> EQUATION where the left side is the IDENTIFIER file_alias, and the right
> side is where the syntax error occurs as $ was encountered.
>
> We must be sure that the pending expression (the Parenthesis ) is released
> as well as the expression of the current token (the $ operator).
>
> Ron
>
> > On Apr 7, 2016, at 12:35 AM, Walter Negro <wne...@vstour.com> wrote:
> >
> >
> > Procedure Main()
> >
> > TRY
> > // ? &( "file_alias = $1" ) // No memory leaks
> > ? &( "(file_alias = $1)" ) // Memory leaks
> > CATCH
> > ? "Catched"
> > END
> >
> > Return
> >
> > ---------------------------
> > This code
> > &( "file_alias = $1" )
> >
> > End in the rule (macro.y)
> > Main : Expression error
> >
> > ---------------------------
> > This code
> > &( "(file_alias = $1)" )
> >
> > End in the rule (macro.y)
> > Main : error
> >
> > I not understand how to fix the rule or
> >
> > Walter Negro
> >
> >
> >
> ------------------------------------------------------------------------------
> > _______________________________________________
> > xHarbour-developers mailing list
> > xHarbour-developers@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/xharbour-developers
>
>
------------------------------------------------------------------------------
Find and fix application performance issues faster with Applications Manager
Applications Manager provides deep performance insights into multiple tiers of
your business applications. It resolves application problems quickly and
reduces your MTTR. Get your free trial!
https://ad.doubleclick.net/ddm/clk/302982198;130105516;z
_______________________________________________
xHarbour-developers mailing list
xHarbour-developers@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/xharbour-developers