Hi Oliver, I've solved it now - thanks. The problem was that the inner stream would contain valid entities from the outer stream - just in a different context. So I took your suggestion about a disntinctive token, effectively a begin and end marker. I just take the inner content and pass it through - thanks
________________________________ From: grammatica-users-bounces+david.elliman=rbccm....@nongnu.org [mailto:grammatica-users-bounces+david.elliman=rbccm....@nongnu.org] On Behalf Of Oliver Gramberg Sent: 14 September 2009 12:21 To: grammatica-users@nongnu.org Subject: Re: [Grammatica-users] Passing through Hi Dave, what exactly is it you want to pass through - characters from the input stream, tokens, or a parse tree? From what you say I take it that the internal parser is complete and self-contained, so you are probably thinking of passing characters. First thing that comes to my mind is, pass the exact same stream that you gave to the outer parser to the inner parser at the correct location. Two caveats: - When you call the inner parser in some Exit... method, all input that corresponds to that rule will already have been parsed, Exit... is post-processing. - The parser may have read a substantial number of characters from the input stream in order to produce enough look-ahead tokens, depending on the complexity of your grammar. My best guess, then, is that you should define a very distinctive token that is to appear before the embedded parts, to prevent the parser from reading ahead. Override that token's Exit... method and try if the input stream still contains the beginning of the following embedded part. If not, some refactoring of your grammar may help. Regards Oliver ________________________________ Oliver Gramberg ABB AG Forschungszentrum Deutschland DECRC/I2 Wallstadter Str. 59 D-68526 Ladenburg Phone: +49 6203/71-6461 Fax: +49 6203/71-6253 E-mail: oliver.gramb...@de.abb.com <mailto:oliver.gramb...@de.abb.com> Sitz/Head Office: Mannheim Registergericht/Registry Court: Mannheim Handelsregisternummer/Commercial Register No.: HRB 4664 Vorstand/Managing Board: Peter Smits (Vorsitzender/Chairman), Heinz-Peter Paffenholz, Dr. Joachim Schneider, Hendrik Weiler Vorsitzender des Aufsichtsrats/Chairman of Supervisory Board: Bernhard Jucker Diese E-Mail enthaelt vertrauliche und/oder rechtlich geschuetzte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtuemlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser Mail ist nicht gestattet. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and destroy this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden. "Elliman, David" <david.elli...@rbccm.com> Sent by: grammatica-users-bounces+oliver.gramberg=de.abb....@nongnu.org 14.09.2009 12:30 Please respond to grammatica-users@nongnu.org To <grammatica-users@nongnu.org> cc Subject [Grammatica-users] Passing through Hi, I have an application deployed using grammatica - it's great thanks. However we want to make use of an expression evaluator internally (probably Flee - which itself uses grammatica!) So ideally we would like to have some "Evaluate" production that simply passes through to the other internal parser (by specifically invoking it on the ExitEvaluateProduction(....) handler that I would supply. The problem of course it that the reg exp is too wide; I had definedthe token PASS_THROUGH <<.+>> and now nothing works because it's too wide and capturing everything all the time. I know that the reg exps are context free WRT the productions which is leading to this but is there any other way to construct this pass through type functionality - other than upgrading our syntax to support everything supported in the internal parser? Cheers, and thanks again Dave _______________________________________________________________________ This email is intended only for the use of the individual(s) to whom it is addressed and may be privileged and confidential. Unauthorised use or disclosure is prohibited. If you receive this e-mail in error, please advise immediately and delete the original message without copying, using, or telling anyone about its contents. This message may have been altered without your or our knowledge and the sender does not accept any liability for any errors or omissions in the message. This message does not create or change any contract. Royal Bank of Canada and its subsidiaries accept no responsibility for damage caused by any viruses contained in this email or its attachments. Emails may be monitored. RBC Capital Markets is a business name used by branches and subsidiaries of Royal Bank of Canada, including Royal Bank of Canada, London branch and Royal Bank of Canada Europe Limited. In accordance with English law requirements, details regarding Royal Bank of Canada Europe Limited are set out below: ROYAL BANK OF CANADA EUROPE LIMITED Registered in England and Wales 995939 Registered Address: 71 Queen Victoria Street, London, EC4V 4DE. Authorised and regulated by the Financial Service Authority. Member of the London Stock Exchange _______________________________________________ Grammatica-users mailing list Grammatica-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/grammatica-users <http://lists.nongnu.org/mailman/listinfo/grammatica-users> _______________________________________________________________________ This email is intended only for the use of the individual(s) to whom it is addressed and may be privileged and confidential. Unauthorised use or disclosure is prohibited. If you receive this e-mail in error, please advise immediately and delete the original message without copying, using, or telling anyone about its contents. This message may have been altered without your or our knowledge and the sender does not accept any liability for any errors or omissions in the message. This message does not create or change any contract. Royal Bank of Canada and its subsidiaries accept no responsibility for damage caused by any viruses contained in this email or its attachments. Emails may be monitored. RBC Capital Markets is a business name used by branches and subsidiaries of Royal Bank of Canada, including Royal Bank of Canada, London branch and Royal Bank of Canada Europe Limited. In accordance with English law requirements, details regarding Royal Bank of Canada Europe Limited are set out below: ROYAL BANK OF CANADA EUROPE LIMITED Registered in England and Wales 995939 Registered Address: 71 Queen Victoria Street, London, EC4V 4DE. Authorised and regulated by the Financial Service Authority. Member of the London Stock Exchange
_______________________________________________ Grammatica-users mailing list Grammatica-users@nongnu.org http://lists.nongnu.org/mailman/listinfo/grammatica-users