Esempio n. 1
0
            public override StringTemplate GenExpr(CodeGenerator generator,
                                                   StringTemplateGroup templates,
                                                   DFA dfa)
            {
                StringTemplate eST = null;

                if (templates != null)
                {
                    if (_synpred)
                    {
                        eST = templates.GetInstanceOf("evalSynPredicate");
                    }
                    else
                    {
                        eST = templates.GetInstanceOf("evalPredicate");
                        generator.grammar.decisionsWhoseDFAsUsesSemPreds.Add(dfa);
                    }
                    string predEnclosingRuleName = predicateAST.enclosingRuleName;

                    /*
                     * String decisionEnclosingRuleName =
                     *  dfa.getNFADecisionStartState().getEnclosingRule();
                     * // if these rulenames are diff, then pred was hoisted out of rule
                     * // Currently I don't warn you about this as it could be annoying.
                     * // I do the translation anyway.
                     */
                    //eST.setAttribute("pred", this.toString());
                    if (generator != null)
                    {
                        eST.SetAttribute("pred",
                                         generator.TranslateAction(predEnclosingRuleName, predicateAST));
                    }
                }
                else
                {
                    eST = new StringTemplate("$pred$");
                    eST.SetAttribute("pred", this.ToString());
                    return(eST);
                }
                if (generator != null)
                {
                    string description =
                        generator.target.GetTargetStringLiteralFromString(this.ToString());
                    eST.SetAttribute("description", description);
                }
                return(eST);
            }
Esempio n. 2
0
 public override StringTemplate GenExpr( CodeGenerator generator,
                               StringTemplateGroup templates,
                               DFA dfa )
 {
     StringTemplate eST = null;
     if ( templates != null )
     {
         if ( _synpred )
         {
             eST = templates.GetInstanceOf( "evalSynPredicate" );
         }
         else
         {
             eST = templates.GetInstanceOf( "evalPredicate" );
             generator.grammar.decisionsWhoseDFAsUsesSemPreds.Add( dfa );
         }
         string predEnclosingRuleName = predicateAST.enclosingRuleName;
         /*
         String decisionEnclosingRuleName =
             dfa.getNFADecisionStartState().getEnclosingRule();
         // if these rulenames are diff, then pred was hoisted out of rule
         // Currently I don't warn you about this as it could be annoying.
         // I do the translation anyway.
         */
         //eST.setAttribute("pred", this.toString());
         if ( generator != null )
         {
             eST.SetAttribute( "pred",
                              generator.TranslateAction( predEnclosingRuleName, predicateAST ) );
         }
     }
     else
     {
         eST = new StringTemplate( "$pred$" );
         eST.SetAttribute( "pred", this.ToString() );
         return eST;
     }
     if ( generator != null )
     {
         string description =
             generator.target.GetTargetStringLiteralFromString( this.ToString() );
         eST.SetAttribute( "description", description );
     }
     return eST;
 }