本文整理匯總了Golang中github.com/dgraph-io/dgraph/lex.Lexer.Ignore方法的典型用法代碼示例。如果您正苦於以下問題:Golang Lexer.Ignore方法的具體用法?Golang Lexer.Ignore怎麽用?Golang Lexer.Ignore使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/dgraph-io/dgraph/lex.Lexer
的用法示例。
在下文中一共展示了Lexer.Ignore方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: lexObject
func lexObject(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == rightCurl:
return lexText
case isSpace(r) || isEndOfLine(r):
l.Ignore()
case isNameBegin(r):
{
for {
r := l.Next()
if isNameSuffix(r) {
continue // absorb
}
l.Backup()
l.Emit(itemObject)
break
}
return lexObjectBlock
}
default:
return l.Errorf("Invalid schema. Unexpected %s", l.Input[l.Start:l.Pos])
}
}
}
示例2: lexLiteral
// Assumes '"' has already been encountered.
func lexLiteral(l *lex.Lexer) lex.StateFn {
for {
r := l.Next()
if r == '\u005c' { // backslash
r = l.Next()
continue // This would skip over the escaped rune.
}
if r == lex.EOF || isEndLiteral(r) {
break
}
}
l.Backup()
l.Emit(itemLiteral)
l.Next() // Move to end literal.
l.Ignore() // Ignore end literal.
l.Depth++
r := l.Peek()
if r == '@' {
return lexLanguage(l)
}
if r == '^' {
return lexObjectType(l)
}
return lexText
}
示例3: lexInsideMutation
// lexInsideMutation lexes the text inside a mutation block.
func lexInsideMutation(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == rightCurl:
l.Depth--
l.Emit(itemRightCurl)
if l.Depth == 0 {
return lexText
}
case r == leftCurl:
l.Depth++
l.Emit(itemLeftCurl)
if l.Depth >= 2 {
return lexTextMutation
}
case r == lex.EOF:
return l.Errorf("Unclosed mutation action")
case isSpace(r) || isEndOfLine(r):
l.Ignore()
case isNameBegin(r):
return lexNameMutation
default:
return l.Errorf("Unrecognized character in lexInsideMutation: %#U", r)
}
}
}
示例4: lexInside
func lexInside(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == rightCurl:
l.Depth -= 1
l.Emit(itemRightCurl)
if l.Depth == 0 {
return lexText
}
case r == leftCurl:
l.Depth += 1
l.Emit(itemLeftCurl)
case r == lex.EOF:
return l.Errorf("unclosed action")
case isSpace(r) || isEndOfLine(r) || r == ',':
l.Ignore()
case isNameBegin(r):
return lexName
case r == '#':
l.Backup()
return lexComment
case r == '(':
l.Emit(itemLeftRound)
return lexArgInside
default:
return l.Errorf("Unrecognized character in lexInside: %#U", r)
}
}
}
示例5: lexArgumentVal
func lexArgumentVal(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case isSpace(r):
l.Ignore()
}
}
}
示例6: lexInside
// lexInside lexes the content inside a query block.
func lexInside(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == period:
if l.Next() == period && l.Next() == period {
return lexFragmentSpread
}
// We do not expect a period at all. If you do, you may want to
// backup the two extra periods we try to read.
return l.Errorf("Unrecognized character in lexInside: %#U", r)
case r == rightCurl:
l.Depth--
l.Emit(itemRightCurl)
if l.Depth == 0 {
return lexText
}
case r == leftCurl:
l.Depth++
l.Emit(itemLeftCurl)
case r == lex.EOF:
return l.Errorf("Unclosed action")
case isSpace(r) || isEndOfLine(r) || r == comma:
l.Ignore()
case isNameBegin(r):
return lexName
case r == '#':
l.Backup()
return lexComment
case r == leftRound:
l.Emit(itemLeftRound)
l.AcceptRun(isSpace)
l.Ignore()
k := l.Next()
if k == '_' || l.Depth != 1 || l.Mode == fragmentMode {
l.Backup()
l.Emit(itemArgument)
return lexArgInside
}
// This is a generator function.
l.Backup()
l.Emit(itemGenerator)
l.FilterDepth++
return lexFilterInside
case r == ':':
return lexAlias
case r == '@':
return lexDirective
default:
return l.Errorf("Unrecognized character in lexInside: %#U", r)
}
}
}
示例7: lexLanguage
func lexLanguage(l *lex.Lexer) lex.StateFn {
r := l.Next()
if r != '@' {
return l.Errorf("Expected @ prefix for lexLanguage")
}
l.Ignore()
r = l.Next()
if !isLangTagPrefix(r) {
return l.Errorf("Invalid language tag prefix: %v", r)
}
l.AcceptRun(isLangTag)
l.Emit(itemLanguage)
return lexText
}
示例8: lexAlias
func lexAlias(l *lex.Lexer) lex.StateFn {
l.AcceptRun(isSpace)
l.Ignore() // Any spaces encountered.
for {
r := l.Next()
if isNameSuffix(r) {
continue
}
l.Backup()
l.Emit(itemAlias)
break
}
return lexInside
}
示例9: lexVarInside
func lexVarInside(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == lex.EOF:
return l.Errorf("unclosed argument")
case isSpace(r) || isEndOfLine(r):
l.Ignore()
case isDollar(r):
return lexVarName
case r == ':':
l.Ignore()
return lexVarType
case r == equal:
l.Emit(itemEqual)
l.Ignore()
return lexVarDefault
case r == rightRound:
l.Emit(itemRightRound)
return lexText
case r == comma:
l.Emit(itemComma)
l.Ignore()
default:
return l.Errorf("variable list invalid")
}
}
}
示例10: lexObjectType
func lexObjectType(l *lex.Lexer) lex.StateFn {
r := l.Next()
if r != '^' {
return l.Errorf("Expected ^ for lexObjectType")
}
r = l.Next()
if r != '^' {
return l.Errorf("Expected ^^ for lexObjectType")
}
l.Ignore()
r = l.Next()
if r != '<' {
return l.Errorf("Expected < for lexObjectType")
}
return lexUntilClosing(l, itemObjectType, lexText)
}
示例11: lexArgVal
// lexArgVal lexes and emits the value part of an argument.
func lexArgVal(l *lex.Lexer) lex.StateFn {
l.AcceptRun(isSpace)
l.Ignore() // Any spaces encountered.
for {
r := l.Next()
if isSpace(r) || isEndOfLine(r) || r == rightRound || r == comma {
l.Backup()
l.Emit(itemArgVal)
return lexArgInside
}
if r == lex.EOF {
return l.Errorf("Reached lex.EOF while reading var value: %v",
l.Input[l.Start:l.Pos])
}
}
}
示例12: lexScalarBlock
func lexScalarBlock(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == ')':
l.Emit(itemRightRound)
return lexText
case isNameBegin(r):
l.Backup()
return lexScalarPair1
case isSpace(r) || isEndOfLine(r):
l.Ignore()
default:
return l.Errorf("Invalid schema. Unexpected %s", l.Input[l.Start:l.Pos])
}
}
}
示例13: lexObject
func lexObject(l *lex.Lexer) lex.StateFn {
r := l.Next()
if r == '<' {
l.Depth += 1
return lexUntilClosing(l, itemObject, lexText)
}
if r == '_' {
l.Depth += 1
return lexBlankNode(l, itemObject, lexText)
}
if r == '"' {
l.Ignore()
return lexLiteral(l)
}
return l.Errorf("Invalid char: %v at lexObject", r)
}
示例14: lexObjectBlock
func lexObjectBlock(l *lex.Lexer) lex.StateFn {
for {
switch r := l.Next(); {
case r == leftCurl:
l.Emit(itemLeftCurl)
case isSpace(r) || isEndOfLine(r):
l.Ignore()
case r == rightCurl:
l.Emit(itemRightCurl)
return lexText
case isNameBegin(r):
return lexObjectPair
default:
return l.Errorf("Invalid schema. Unexpected %s", l.Input[l.Start:l.Pos])
}
}
}
示例15: lexArgVal
func lexArgVal(l *lex.Lexer) lex.StateFn {
l.AcceptRun(isSpace)
l.Ignore() // Any spaces encountered.
for {
r := l.Next()
if isSpace(r) || isEndOfLine(r) || r == ')' || r == ',' {
l.Backup()
l.Emit(itemArgVal)
return lexArgInside
}
if r == lex.EOF {
return l.Errorf("Reached lex.EOF while reading var value: %v",
l.Input[l.Start:l.Pos])
}
}
glog.Fatal("This shouldn't be reached.")
return nil
}