func (self *CommentParser) Run(src string, commentArray []*TaggedComment) (ret []*TaggedComment) { defer golexer.ErrorCatcher(func(err error) { log.Errorln(err, self.TokenID(), self.TokenValue()) ret = commentArray }) self.Lexer().Start(src) for { self.NextToken() //log.Debugln("#", self.TokenID(), self.TokenValue()) if self.TokenID() == Token_WhiteSpace { continue } // 读取标头 if self.TokenID() == Token_LeftBrace { self.NextToken() var tc TaggedComment tagNameToken := self.Expect(Token_Identifier) self.Expect(Token_RightBrace) tc.Name = tagNameToken.Value() for { //log.Debugln("#", self.TokenID(), self.TokenValue()) tc.Data += self.TokenValue() self.NextToken() if self.TokenID() == Token_LineEnd || self.TokenID() == Token_EOF { break } } commentArray = append(commentArray, &tc) } if self.TokenID() == Token_EOF { break } } return commentArray }
func (self *structParser) Run(fd *model.FieldDescriptor, callback func(string, string) bool) (ok bool) { defer golexer.ErrorCatcher(func(err error) { log.Errorf("%s, '%s' '%v'", i18n.String(i18n.StructParser_LexerError), fd.Name, err.Error()) }) self.NextToken() for self.TokenID() != Token_EOF { if self.TokenID() != Token_Identifier { log.Errorf("%s, '%s'", i18n.String(i18n.StructParser_ExpectField), fd.Name) return false } key := self.TokenValue() self.NextToken() if self.TokenID() != Token_Comma { log.Errorf("%s, '%s'", i18n.String(i18n.StructParser_UnexpectedSpliter), key) return false } self.NextToken() value := self.TokenValue() if !callback(key, value) { return false } self.NextToken() } return true }