[prev in list] [next in list] [prev in thread] [next in thread]
List: antlr-interest
Subject: Re: [antlr-interest] Illegal escape sequence in C#
From: <rkevinburton () charter ! net>
Date: 2008-07-30 21:58:49
Message-ID: 20080730175849.59FXS.188665.root () fepweb04
[Download RAW message or body]
I found the problem with "illegal cast". Again it was in the action for the grammar. \
The code looks like:
switch ((int)(lhs.Tree))
So lhs.Tree is not and cannot be converted to int. Again I am taking a grammar \
(ECMAScript) on the ANTLR grammar web site) and trying to get it to work with some \
modification is hopes of learning ANTLR better. So please be patient. How can I \
modify the action so that this cast is acceptable? Of should it be acceptable? I have \
attached my modified version of the grammar.
Thank you.
Kevin
---- rkevinburton@charter.net wrote:
> I am getting closer. This last problem is probably something wrong with the \
> grammar. I changed start to Start and the code now compiles (yea!!) But I get a \
> runtime error:
> A first chance exception of type 'System.InvalidCastException' occurred in \
> JScriptParser.dll
> It seems to occur with the following input:
>
> function GetSiteConfiguration(catalogContext:CatalogContext, \
> profileManagementContext:ProfileManagementContext) {
> return ProfileManagementConverter.SiteConfiguration(catalogContext, \
> profileManagementContext); }
>
> Is what is strange is that when I put just this input into ANTLRWorks interpretor I \
> don't get any errors.
> If I put two function declarations in ANTLRWorks with the start token as \
> functionDeclaration I also don't get any errors but I only see the tree for one \
> declaration. I don't think it reset properly. Unlike the rror exception thrown \
> there is no cast being attempted. Anyway it seems to be a problem with the grammar. \
> Unless you have some suggestions on how best to debug this kind of problem I will \
> consider this issue closed. Thank you.
> Kevin
>
>
> --- rkevinburton@charter.net wrote:
> > I downloaded 3.1b2 of ANTLR and replaced the references that I had with the \
> > references to the runtime->CSharp->net2.0 assemblies. Now I am down to one error: \
> > 'Antlr.Runtime.ParserRuleReturnScope' does not contain a definition for 'start' \
> > and no extension method 'start' accepting a first argument of type \
> > 'Antlr.Runtime.ParserRuleReturnScope' could be found (are you missing a using \
> > directive or an assembly reference?)
> > This seems to be generated as part of the actions in the grammar. Do you know \
> > what replaced .start?
> > else if (lt.Type == EOL || (lt.Type == MultiLineComment && \
> > Regex.IsMatch(lt.Text, "/.*\r\n|\r|\n"))) {
> > // We found our EOL: promote the token to on channel, position the input on \
> > it and reset the rule start. lt.Channel = Token.DEFAULT_CHANNEL;
> > input.Seek(lt.TokenIndex);
> > if (rule != null)
> > {
> > rule.start = lt;
> > }
> > break;
> > }
> >
> > I am relatively new to ANTLR and this from a grammar that is for ECMAScript that \
> > is on the ANTLR grammar site. I think is what is being done here is an attempt at \
> > "auto semicolon inserstion". I think is what is supposed to happen here is that \
> > if there is no semicolon but there is an EOL then reset the parser. How that is \
> > done as apparently changed between 3.0 and 3.1. Thanks again.
> > Kevin
> >
> > ---- Johannes Luber <jaluber@gmx.de> wrote:
> > > rkevinburton@charter.net schrieb:
> > > > I changed the "language" to be CSharp2 and that fixed the illegal escape \
> > > > equence (thank youl) but now the following will not compile:
> > > > public ECMAScriptParser(ITokenStream input)
> > > > : this(input, new RecognizerSharedState()) {
> > > > }
> > > >
> > > > public ECMAScriptParser(ITokenStream input, RecognizerSharedState state)
> > > > : base(input, state) {
> > > > InitializeCyclicDFAs();
> > > > }
> > > >
> > > > It seems that RecognizerSharedState is no longer recognized. Any substitutes?
> > > >
> > > > Thanks again.
> > > >
> > > > Kevin
> > >
> > > Did you use the correct assemblies? Each beta has it own version.
> > >
> > > Johannes
> > > > ---- rkevinburton@charter.net wrote:
> > > > > I did a quick check and it seems that 1.2b5 is the latest version of \
> > > > > ANTLRWorks that is offered on the web site. Should I go back to 1.1.7? What \
> > > > > about the version of ANTLR itselft (but I thought ANTLRWorks included \
> > > > > ANTLR).
> > > > > Now I am confused.
> > > > >
> > > > > Thank you for the tips.
> > > > >
> > > > > Kevin
> > > > >
> > > > > ---- Johannes Luber <jaluber@gmx.de> wrote:
> > > > > > rkevinburton@charter.net schrieb:
> > > > > > > I am not sure what I have done but now when I generate code from \
> > > > > > > ANTLRWorks it generates lines containing escape sequences that C# \
> > > > > > > doesn't understand. Like:
> > > > > > > const string DFA18_eotS =
> > > > > > > "\1\uffff\2\4\3\uffff\1\4";
> > > > > > > const string DFA18_eofS =
> > > > > > > "\7\uffff";
> > > > > > > const string DFA18_minS =
> > > > > > > "\3\56\3\uffff\1\56";
> > > > > > > const string DFA18_maxS =
> > > > > > > "\1\71\1\56\1\71\3\uffff\1\71";
> > > > > > > const string DFA18_acceptS =
> > > > > > > "\3\uffff\1\2\1\3\1\1\1\uffff";
> > > > > > > const string DFA18_specialS =
> > > > > > > "\7\uffff}>";
> > > > > > > static readonly string[] DFA18_transitionS = {
> > > > > > > "\1\3\1\uffff\1\1\11\2",
> > > > > > > "\1\5",
> > > > > > > "\1\5\1\uffff\12\6",
> > > > > > > "",
> > > > > > > "",
> > > > > > > "",
> > > > > > > "\1\5\1\uffff\12\6"
> > > > > > > };
> > > > > > >
> > > > > > > This is just a sample. There are over 400 such errors when C# tries to \
> > > > > > > compile the generated code from the lexer. How do I get ANTLRWorks to \
> > > > > > > generate the "right" code again?
> > > > > > > Thank you.
> > > > > > >
> > > > > > > Kevin
> > > > > > >
> > > > > > Could it be that you are using AW 1.2 beta with the CSharp target? That
> > > > > > was broken in an earlier version of ANTLR. I don't know if the newest
> > > > > > beta includes ANTLR 3.1b2 but you can also switch to CSharp2 as target.
> > > > > >
> > > > > > Johannes
> > > >
> > >
> >
>
["ECMAScript.g" (application/octet-stream)]
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic