Пример #1
0
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
}
Пример #2
0
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
}