in doc-src/parsejs/lib/parsejs/grammar.kpeg.rb [7819:7907]
def _Literal
_save = self.pos
while true # choice
_save1 = self.pos
while true # sequence
_tmp = apply(:_NullLiteral)
unless _tmp
self.pos = _save1
break
end
@result = begin; literal(nil); end
_tmp = true
unless _tmp
self.pos = _save1
end
break
end # end sequence
break if _tmp
self.pos = _save
_tmp = apply(:_BooleanLiteral)
break if _tmp
self.pos = _save
_save2 = self.pos
while true # sequence
_tmp = apply(:_NumericLiteral)
number = @result
unless _tmp
self.pos = _save2
break
end
@result = begin; literal(number); end
_tmp = true
unless _tmp
self.pos = _save2
end
break
end # end sequence
break if _tmp
self.pos = _save
_save3 = self.pos
while true # sequence
_tmp = apply(:_StringLiteral)
string = @result
unless _tmp
self.pos = _save3
break
end
@result = begin; literal(string); end
_tmp = true
unless _tmp
self.pos = _save3
end
break
end # end sequence
break if _tmp
self.pos = _save
_save4 = self.pos
while true # sequence
_tmp = apply(:_RegularExpressionLiteral)
regex = @result
unless _tmp
self.pos = _save4
break
end
@result = begin; literal(regex); end
_tmp = true
unless _tmp
self.pos = _save4
end
break
end # end sequence
break if _tmp
self.pos = _save
break
end # end choice
set_failed_rule :_Literal unless _tmp
return _tmp
end