public override object VisitSignedFactor([NotNull] SLangGrammarParser.SignedFactorContext context) { var exprRes = (Visit(context.factor()) as ExpressionResult); if (exprRes != null) { var type = exprRes.Type; var signToken = context.AddOp() ?? context.SubOp(); if (signToken != null) { if (type is SlangSimpleType t && (t.Equals(SlangSimpleType.Real) || t.Equals(SlangSimpleType.Int))) { return(new ExpressionResult(type, ExpressionValueType.Value)); } ThrowInvalidTypesForUnaryOperationException(signToken, file, type); } else { return(new ExpressionResult(type, exprRes.ExpressionType)); } } return(null); }
public override object VisitSignedFactor([NotNull] SLangGrammarParser.SignedFactorContext context) { var op = context.AddOp() ?? context.SubOp(); if (op != null) { cppText.Write(op.GetText()); } Visit(context.factor()); return(null); }
/// <summary> /// Exit a parse tree produced by <see cref="SLangGrammarParser.signedFactor"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitSignedFactor([NotNull] SLangGrammarParser.SignedFactorContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="SLangGrammarParser.signedFactor"/>. /// <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 VisitSignedFactor([NotNull] SLangGrammarParser.SignedFactorContext context) { return(VisitChildren(context)); }