예제 #1
0
 public T Visit(IASTNode node)
 {
     return(node switch
     {
         ASTType n => VisitASTType(n),
         ASTTypeField n => VisitASTTypeField(n),
         ASTTypeDefinition n => VisitASTTypeDefinition(n),
         ASTRestriction n => VisitASTRestriction(n),
         ASTAlias n => VisitASTAlias(n),
         ASTData n => VisitASTData(n),
         ASTAnnotation n => VisitASTAnnotation(n),
         ASTDirective n => VisitASTDirective(n),
         ASTChoice n => VisitASTChoice(n),
         ASTOption n => VisitASTOption(n),
         ASTChapter n => VisitASTChapter(n),
         ASTParagraph n => VisitASTParagraph(n),
         _ => VisitDefault(node),
     });
        public void ChoicesAnnotations()
        {
            var code      = @"
choice Gender =
    | ""Male""
    | ""Female""

    @ Non-binary option
    | ""Other""
";
            var tokens    = new Lexer().Lex(code);
            var parseTree = new Parser(tokens).Parse().ToList();

            Assert.NotNull(parseTree);
            Assert.Single(parseTree);

            ASTChoice choice = parseTree[0] as ASTChoice;
            ASTOption option = choice.Options[2];

            Assert.Equal("Other", option.Value);
            Assert.Single(option.Annotations);
            Assert.Equal("Non-binary option", option.Annotations.First().Value);
        }
예제 #3
0
 public override string VisitASTOption(ASTOption astOption)
 {
     return("");
 }
예제 #4
0
 public override string VisitASTOption(ASTOption astOption)
 {
     throw new NotImplementedException();
 }
예제 #5
0
 public override T VisitASTOption(ASTOption astOption) => d;
예제 #6
0
 public override XmlSchemaObject?VisitASTOption(ASTOption astOption)
 {
     return(null);
 }