public override string VisitASTRestriction(ASTRestriction astRestriction) { var indent = astRestriction.Depth == 1 ? " " : " "; var annotations = astRestriction .Annotations .Select(Visit) .Select(a => indent + a); var a = string.Join("\n", annotations); if (annotations.Count() > 0) { return($"\n{a}\n{indent}& {astRestriction.Key} {astRestriction.Value}"); } else { return($"{indent}& {astRestriction.Key} {astRestriction.Value}"); } }
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 StringRestrictions() { var code = @" alias Name = String & default ""Other thing"" ; "; var tokens = new Lexer().Lex(code); var parseTree = new Parser(tokens).Parse().ToList(); Assert.NotNull(parseTree); Assert.Single(parseTree); var alias = parseTree[0] as ASTAlias; Assert.Single(alias.Restrictions); ASTRestriction restriction = alias.Restrictions.First(); Assert.Equal(TokenType.String, restriction.Token.TokenType); }
public void PatternRestrictions() { var code = @" alias Name = String & pattern /[A-Z][a-z]{1,30}/ ; "; var tokens = new Lexer().Lex(code); var parseTree = new Parser(tokens).Parse().ToList(); Assert.NotNull(parseTree); Assert.Single(parseTree); ASTAlias alias = parseTree[0] as ASTAlias; Assert.Single(alias.Restrictions); ASTRestriction restriction = alias.Restrictions.First(); Assert.Equal(TokenType.Pattern, restriction.Token.TokenType); }
public override string VisitASTRestriction(ASTRestriction astRestriction) { return(""); }
public override T VisitASTRestriction(ASTRestriction astRestriction) => d;
public override XmlSchemaObject?VisitASTRestriction(ASTRestriction astRestriction) { return(null); }