func NewCommentParser() *CommentParser { l := golexer.NewLexer() // 匹配顺序从高到低 l.AddMatcher(golexer.NewSignMatcher(Token_LeftBrace, "[")) l.AddMatcher(golexer.NewSignMatcher(Token_RightBrace, "]")) l.AddMatcher(golexer.NewWhiteSpaceMatcher(Token_WhiteSpace)) l.AddMatcher(golexer.NewLineEndMatcher(Token_LineEnd)) l.AddIgnoreMatcher(golexer.NewUnixStyleCommentMatcher(Token_UnixStyleComment)) l.AddMatcher(golexer.NewIdentifierMatcher(Token_Identifier)) l.AddMatcher(golexer.NewUnknownMatcher(Token_Unknown)) return &CommentParser{ Parser: golexer.NewParser(l), } }
func newStructParser(value string) *structParser { l := golexer.NewLexer() l.AddMatcher(golexer.NewNumeralMatcher(Token_Numeral)) l.AddMatcher(golexer.NewStringMatcher(Token_String)) l.AddIgnoreMatcher(golexer.NewWhiteSpaceMatcher(Token_WhiteSpace)) l.AddIgnoreMatcher(golexer.NewLineEndMatcher(Token_LineEnd)) l.AddIgnoreMatcher(golexer.NewUnixStyleCommentMatcher(Token_UnixStyleComment)) l.AddMatcher(golexer.NewSignMatcher(Token_Comma, ":")) l.AddMatcher(golexer.NewIdentifierMatcher(Token_Identifier)) l.AddMatcher(golexer.NewUnknownMatcher(Token_Unknown)) l.Start(value) return &structParser{ golexer.NewParser(l), } }