예제 #1
0
 private DiagramItem Transform(ANTLRv4Parser.AtomContext context)
 {
     if (context.terminal() != null)
     {
         return(new Terminal(context.terminal().TOKEN_REF()?.GetText() ?? context.terminal().STRING_LITERAL().GetText(), noneString, noneString));
     }
     if (context.ruleref() != null)
     {
         List <Terminal> terminals = new List <Terminal>(2)
         {
             new Terminal(context.ruleref().RULE_REF().GetText(), noneString, noneString)
         };
         if (context.ruleref().argActionBlock() != null)
         {
             terminals.Add(TerminalWithClass(context.ruleref().argActionBlock().GetText(), "argActionBlocks"));
         }
         return(new Sequence(terminals.Select(FSharpChoice <DiagramItem, string> .NewChoice1Of2)));
     }
     if (context.notSet() != null)
     {
         return(new Sequence(new DiagramItem[] { TerminalWithClass("NOT", "nots"),
                                                 context.notSet().setElement() == null ? Transform(context.notSet().blockSet()) : Transform(context.notSet().setElement()) }
                             .Select(FSharpChoice <DiagramItem, string> .NewChoice1Of2)));
     }
     if (context.DOT() != null)
     {
         return(new Terminal("Anything", noneString, noneString));
     }
     throw new NotImplementedException();
 }
 /// <summary>
 /// Enter a parse tree produced by <see cref="ANTLRv4Parser.atom"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void EnterAtom([NotNull] ANTLRv4Parser.AtomContext context)
 {
 }
 /// <summary>
 /// Visit a parse tree produced by <see cref="ANTLRv4Parser.atom"/>.
 /// <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 VisitAtom([NotNull] ANTLRv4Parser.AtomContext context)
 {
     return(VisitChildren(context));
 }