[antlr-interest] To Sam Harwell
Terence Parr
parrt at cs.usfca.edu
Wed Aug 10 11:53:00 PDT 2011
Sam: do i need to fix in java version?
Ter
On Aug 10, 2011, at 10:32 AM, Sam Harwell wrote:
> Hi Chris,
>
>
>
> I fixed this for the next release, but I don't have a build ready yet. If
> you'd like to make the change locally so you can keep working, just do the
> following:
>
>
>
> 1. Add the following at the beginning of
> SemanticContext.And(SemanticContext, SemanticContext):
>
>
>
> if (a is FalsePredicate || b is FalsePredicate)
>
> return FalsePredicate.Instance;
>
>
>
> 2. Add the following at the beginning of SemanticContext.Or(SemanticContext,
> SemanticContext):
>
>
>
> if (a is TruePredicate || b is TruePredicate)
>
> return TruePredicate.Instance;
>
>
>
> Sam
>
>
>
> From: chris king [mailto:kingces95 at gmail.com]
> Sent: Tuesday, August 09, 2011 11:47 PM
> To: Sam Harwell
> Cc: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] To Sam Harwell
>
>
>
> Oops. Let's try this again...
>
> On Tue, Aug 9, 2011 at 9:41 PM, Sam Harwell <sharwell at pixelminegames.com>
> wrote:
>
> Hi Chris,
>
>
>
> You attached CSharp.cs instead of CSharp.g3, so I currently can't reproduce
> this issue.
>
>
>
> I'm glad you caught this. It definitely looks like a bug in some work I
> recently did on the predicate analyzer.
>
>
>
> I'll have to get this taken care of tomorrow since it's late here. :)
>
>
>
> Thanks,
>
> Sam
>
>
>
> From: chris king [mailto:kingces95 at gmail.com]
> Sent: Tuesday, August 09, 2011 9:56 PM
>
>
> To: Sam Harwell; antlr-interest at antlr.org
> Subject: Re: [antlr-interest] To Sam Harwell
>
>
>
> Sam, hey. Sorry to shower you with e-mails today. :) I got your new version
> setup up and building but now one of my grammar file is causing a stack
> overflow. I'm not sure if this is a problem with the CSharp port or a bug in
> the Java ANTLR logic. Anyway, the attached grammer file of mine worked with
> v3.3.1.7705 but with v3.4.1.9004 is causing a stack overflow in antlr3.exe.
> To repro include the attached file in a .csproj as an Antlr3 include per
> your instructions. Then uncomment either one of these rules and save to
> execute Antlr3.
>
>
>
> pp_conditional_section
>
> : //{ !SkipSection }? => input_section
>
> | //{ SkipSection }? => pp_skipped_section_part*
>
> ;
>
>
>
> Here's how I'm include the file in the project:
>
>
>
> <Antlr3 Include="CSharp.g">
>
> <Generator>MSBuild:Compile</Generator>
>
> </Antlr3>
>
>
>
> Here's the top of the function signature that I'm recursing through:
>
>
>
> // Factor so (a || b) == (result || a || b)
>
> public static SemanticContext FactorOr(ref SemanticContext a, ref
> SemanticContext b)
>
> {
>
> HashSet<SemanticContext> opsA = new
> HashSet<SemanticContext>(GetOrOperands(a));
>
> HashSet<SemanticContext> opsB = new
> HashSet<SemanticContext>(GetOrOperands(b));
>
>
>
> Here's a stack trace of the recursion I'm seeing. The line numbers should
> match the source in v3.4.1.9004. I used that source to build the Antlr3.exe
> that's having the stack overflow.
>
>
>
> Antlr3.EXE!Antlr3.Analysis.SemanticContext.And(a, b) Line 681
> C#
>
> Antlr3.EXE!Antlr3.Analysis.SemanticContext.And(a, b) Line 681
> C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 809 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 730 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 823 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 740 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 740 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 823 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 730 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 813 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 730 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 823 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 823 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Closure(p, alt,
> context, semanticContext, d, collectPredicates) Line 760 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.ComputeStartState()
> Line 176 C#
>
> Antlr3.EXE!Antlr3.Analysis.NFAToDFAConverter.Convert() Line 90
> C#
>
> Antlr3.EXE!Antlr3.Analysis.DFA.CreateFromNfa(decisionNumber,
> decisionStartState) Line 243 C#
>
> Antlr3.EXE!Antlr3.Tool.Grammar.CreateLookaheadDFA(decision,
> wackTempStructures) Line 1858 C#
>
>
> Antlr3.EXE!Antlr3.Tool.Grammar.CreateLookaheadDFAs(wackTempStructures) Line
> 1586 C#
>
> Antlr3.EXE!Antlr3.Tool.Grammar.CreateLookaheadDFAs() Line 1526
> C#
>
>
> Antlr3.EXE!Antlr3.Codegen.Target.PerformGrammarAnalysis(generator, grammar)
> Line 121 C#
>
> Antlr3.EXE!Antlr3.Codegen.CodeGenerator.GenRecognizer() Line 670
> C#
>
> Antlr3.EXE!Antlr3.AntlrTool.GenerateRecognizer(grammar) Line 791
> C#
>
> Antlr3.EXE!Antlr3.AntlrTool.Process() Line 586 C#
>
>
> AntlrBuildTask.DLL!Antlr3.Build.Tasks.AntlrClassGenerationTaskInternal.Execu
> te() Line 135 C#
>
>
>
> Thanks,
>
> Chris
>
>
>
>
>
> On Tue, Aug 9, 2011 at 6:39 PM, chris king <kingces95 at gmail.com> wrote:
>
> Also, in Antlr3.csproj I think LeftRecursiveRules.stg was pointing to the
> wrong place. I changed it to this and then the solution compiled:
>
>
>
> <EmbeddedResource
> Include="..\..\..\antlr\antlr3-main\tool\src\main\resources\org\antlr\codege
> n\templates\LeftRecursiveRules.stg">
>
>
>
> Thanks,
> Chris
>
>
>
> On Tue, Aug 9, 2011 at 6:24 PM, chris king <kingces95 at gmail.com> wrote:
>
> Sam, thanks! FYI The compilation of your source drop fails because the key
> file is not included. You may want to disabled signing in all your projects
> before you release the source drop or provide a dummy key file or find some
> work around so folks can just open up the source and compile it. That would
> help upgrading to the next version.
>
> Thanks,
> Chris
>
>
>
> On Tue, Aug 9, 2011 at 5:02 PM, Sam Harwell <sharwell at pixelminegames.com>
> wrote:
>
> Hi Chris,
>
>
>
> I got rid of the use of Stack<T> and the call to ElementAt() quite a while
> back. Instead I use a ListStack<T> which derives from List<T> and adds Push
> and Pop methods. I recommend updating to ANTLR 3.4.1 to correct this issue.
>
>
>
> Sam
>
>
>
> From: chris king [mailto:kingces95 at gmail.com]
> Sent: Tuesday, August 09, 2011 6:29 PM
> To: Sam Harwell; antlr-interest at antlr.org
>
>
> Subject: Re: [antlr-interest] To Sam Harwell
>
>
>
> Sam, hey, so I might have bumped into a code gen bug. I'm trying to access a
> variable "skipSection" on the parent production of "pp_conditional". It
> looks like the generated code is doing some computation involving the stack
> count when really it should just pass my index without any calculation. For
> example, below, shouldn't the highlighted code simply be my index? Or am I
> missing something? Looks like the highlighted code is assuming TOS is Count
> - 1 (like it would be with a stack implemented with a List<T>) but I don't
> think that's the case. The stack is a System.Collections.Generic.Stack<T>
> which maintains that TOS is always index 0.
>
>
>
> $pp_conditional[1]::skipSection
>
>
>
> The code above is transformed to:
>
>
>
> System.Linq.Enumerable.ElementAt(pp_conditional_stack,
> pp_conditional_stack.Count-1-1).skipSection;
>
>
>
> Also, you may want to ensure that all user expressions are enclosed in
> parens. As I was trying to work around this issue I used "count -2" which
> got translated to stack.Count-count -2 -1. I had to add the parens to get it
> to be stack.Count-(count -2) -1.
>
>
>
> Thanks,
>
> Chris
>
>
>
> On Thu, Aug 4, 2011 at 6:00 PM, chris king <kingces95 at gmail.com> wrote:
>
> Ok. Thanks for looking into it.
>
>
>
> On Thu, Aug 4, 2011 at 5:56 PM, Sam Harwell <sharwell at pixelminegames.com>
> wrote:
>
> I did, and I can repro the issue but I haven't resolved it yet.
>
>
>
> Sam
>
>
>
> From: chris king [mailto:kingces95 at gmail.com]
> Sent: Thursday, August 04, 2011 6:48 PM
> To: Sam Harwell
> Cc: antlr-interest at antlr.org
> Subject: Re: [antlr-interest] To Sam Harwell
>
>
>
> Awesome! I'll give it try. Did you see my follow up email that the parse
> string is 5 characters (there is a trailing space)? "/**/ "
>
>
>
> And again, love the tool chain. I only really started to get traction on my
> project after I installed it. It's working great.
>
>
>
> Thanks,
> Chris
>
>
>
> On Thu, Aug 4, 2011 at 4:34 PM, Sam Harwell <sharwell at pixelminegames.com>
> wrote:
>
> Hi Chris,
>
> In build 3.4.1.9004 that I released today, I switched all the projects to
> using $(ProjectDir) with relative paths.
>
> http://www.antlr.org/wiki/display/ANTLR3/Antlr3CSharpReleases
>
>
> Sam
>
> -----Original Message-----
> From: antlr-interest-bounces at antlr.org
> [mailto:antlr-interest-bounces at antlr.org] On Behalf Of chris king
> Sent: Monday, July 25, 2011 6:39 PM
> To: antlr-interest at antlr.org
> Subject: [antlr-interest] To Sam Harwell
>
> Sam, hey, hope this finds you. Very small suggestion follows :). In
> Antlr3.StringTemplate.csproj could you use
>
>
> <AntlrBuildTaskPath>$(MSBuildProjectDirectory)\..\bin\Bootstrap</AntlrBuildT
> askPath>
>
> to reference the bootstrap directory? Originally it used the solutionDir and
> that prevented me from including a subset of the projects in my project (so
> I could simply reference them and have all the debugging, pdb, source, etc
> just work).
>
> Thanks,
> Chris
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe:
> http://www.antlr.org/mailman/options/antlr-interest/your-email-address
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> List: http://www.antlr.org/mailman/listinfo/antlr-interest
> Unsubscribe: http://www.antlr.org/mailman/options/antlr-interest/your-email-address
More information about the antlr-interest
mailing list