示例#1
0
 private Atom ParseLiteral(TemplateParser.ExprValueContext value)
 {
     if (value.integerValue != null)
     {
         long t = 0L;
         if (long.TryParse(value.integerValue.Text, out t))
         {
             return(new Atom(AtomType.INT, t));
         }
         else
         {
             //error
         }
     }
     else if (value.floatValue != null)
     {
         double t = 0;
         if (double.TryParse(value.floatValue.Text, out t))
         {
             return(new Atom(AtomType.FLOAT, t));
         }
         else
         {
             //error
         }
     }
     else if (value.boolValue != null)
     {
         bool t = false;
         if (bool.TryParse(value.boolValue.Text, out t))
         {
             return(new Atom(AtomType.BOOL, t));
         }
         else
         {
             //error
         }
     }
     else if (value.stringValue != null)
     {
         return(new Atom(AtomType.STRING, value.stringValue));
     }
     return(new Atom(AtomType.NULL, 0));
 }
示例#2
0
 /// <summary>
 /// Visit a parse tree produced by <see cref="TemplateParser.exprValue"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitExprValue([NotNull] TemplateParser.ExprValueContext context)
 {
     return(VisitChildren(context));
 }
示例#3
0
 /// <summary>
 /// Exit a parse tree produced by <see cref="TemplateParser.exprValue"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitExprValue([NotNull] TemplateParser.ExprValueContext context)
 {
 }