mirror of
https://github.com/gonum/gonum.git
synced 2025-09-27 03:26:04 +08:00

This code is based on the RDF N-Quad parsing code that I wrote for the Cayley graph database project in 2014. The code here does not include any code that was written by other members of the Cayley project and so is unencumbered by copyright ownership from that project. License addition is for the test suite from [1] linked from [2]. A second more restrictive license is possible if we are claiming spec compliance[3]. [1]https://www.w3.org/Consortium/Legal/2008/03-bsd-license [2]https://www.w3.org/Consortium/Legal/2008/04-testsuite-copyright.html [3]https://www.w3.org/Consortium/Legal/2008/04-testsuite-license.html
527 lines
8.3 KiB
Go
527 lines
8.3 KiB
Go
|
|
//line check.rl:1
|
|
// Go code generated by go generate gonum.org/v1/gonum/graph/formats/rdf; DO NOT EDIT.
|
|
|
|
// Copyright ©2020 The Gonum Authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package rdf
|
|
|
|
import (
|
|
"fmt"
|
|
"unicode"
|
|
)
|
|
|
|
|
|
//line check.go:18
|
|
const checkLabel_start int = 1
|
|
const checkLabel_first_final int = 3
|
|
const checkLabel_error int = 0
|
|
|
|
const checkLabel_en_value int = 1
|
|
|
|
|
|
//line check.rl:53
|
|
|
|
|
|
func checkLabelText(data []rune) (err error) {
|
|
var (
|
|
cs, p int
|
|
pe = len(data)
|
|
eof = pe
|
|
)
|
|
|
|
|
|
//line check.go:37
|
|
{
|
|
cs = checkLabel_start
|
|
}
|
|
|
|
//line check.rl:63
|
|
|
|
|
|
//line check.go:45
|
|
{
|
|
if p == pe {
|
|
goto _test_eof
|
|
}
|
|
switch cs {
|
|
case 1:
|
|
goto st_case_1
|
|
case 0:
|
|
goto st_case_0
|
|
case 3:
|
|
goto st_case_3
|
|
case 2:
|
|
goto st_case_2
|
|
}
|
|
goto st_out
|
|
st_case_1:
|
|
if data[p] == 95 {
|
|
goto st3
|
|
}
|
|
switch {
|
|
case data[p] < 895:
|
|
switch {
|
|
case data[p] < 192:
|
|
switch {
|
|
case data[p] < 65:
|
|
if 48 <= data[p] && data[p] <= 58 {
|
|
goto st3
|
|
}
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 214:
|
|
switch {
|
|
case data[p] < 248:
|
|
if 216 <= data[p] && data[p] <= 246 {
|
|
goto st3
|
|
}
|
|
case data[p] > 767:
|
|
if 880 <= data[p] && data[p] <= 893 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 8191:
|
|
switch {
|
|
case data[p] < 12289:
|
|
switch {
|
|
case data[p] < 8304:
|
|
if 8204 <= data[p] && data[p] <= 8205 {
|
|
goto st3
|
|
}
|
|
case data[p] > 8591:
|
|
if 11264 <= data[p] && data[p] <= 12271 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 55295:
|
|
switch {
|
|
case data[p] < 65008:
|
|
if 63744 <= data[p] && data[p] <= 64975 {
|
|
goto st3
|
|
}
|
|
case data[p] > 65533:
|
|
if 65536 <= data[p] && data[p] <= 983039 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
goto tr0
|
|
tr0:
|
|
//line check_actions.rl:12
|
|
|
|
if p < len(data) {
|
|
if r := data[p]; r < unicode.MaxASCII {
|
|
return fmt.Errorf("%w: unexpected rune %q at %d", ErrInvalidTerm, data[p], p)
|
|
} else {
|
|
return fmt.Errorf("%w: unexpected rune %q (\\u%04[2]x) at %d", ErrInvalidTerm, data[p], p)
|
|
}
|
|
}
|
|
return ErrIncompleteTerm
|
|
|
|
goto st0
|
|
//line check.go:145
|
|
st_case_0:
|
|
st0:
|
|
cs = 0
|
|
goto _out
|
|
st3:
|
|
if p++; p == pe {
|
|
goto _test_eof3
|
|
}
|
|
st_case_3:
|
|
switch data[p] {
|
|
case 45:
|
|
goto st3
|
|
case 46:
|
|
goto st2
|
|
case 95:
|
|
goto st3
|
|
case 183:
|
|
goto st3
|
|
}
|
|
switch {
|
|
case data[p] < 8204:
|
|
switch {
|
|
case data[p] < 192:
|
|
switch {
|
|
case data[p] < 65:
|
|
if 48 <= data[p] && data[p] <= 58 {
|
|
goto st3
|
|
}
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 214:
|
|
switch {
|
|
case data[p] < 248:
|
|
if 216 <= data[p] && data[p] <= 246 {
|
|
goto st3
|
|
}
|
|
case data[p] > 893:
|
|
if 895 <= data[p] && data[p] <= 8191 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 8205:
|
|
switch {
|
|
case data[p] < 12289:
|
|
switch {
|
|
case data[p] < 8304:
|
|
if 8255 <= data[p] && data[p] <= 8256 {
|
|
goto st3
|
|
}
|
|
case data[p] > 8591:
|
|
if 11264 <= data[p] && data[p] <= 12271 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 55295:
|
|
switch {
|
|
case data[p] < 65008:
|
|
if 63744 <= data[p] && data[p] <= 64975 {
|
|
goto st3
|
|
}
|
|
case data[p] > 65533:
|
|
if 65536 <= data[p] && data[p] <= 983039 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
goto st0
|
|
st2:
|
|
if p++; p == pe {
|
|
goto _test_eof2
|
|
}
|
|
st_case_2:
|
|
switch data[p] {
|
|
case 45:
|
|
goto st3
|
|
case 46:
|
|
goto st2
|
|
case 95:
|
|
goto st3
|
|
case 183:
|
|
goto st3
|
|
}
|
|
switch {
|
|
case data[p] < 8204:
|
|
switch {
|
|
case data[p] < 192:
|
|
switch {
|
|
case data[p] < 65:
|
|
if 48 <= data[p] && data[p] <= 58 {
|
|
goto st3
|
|
}
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 214:
|
|
switch {
|
|
case data[p] < 248:
|
|
if 216 <= data[p] && data[p] <= 246 {
|
|
goto st3
|
|
}
|
|
case data[p] > 893:
|
|
if 895 <= data[p] && data[p] <= 8191 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 8205:
|
|
switch {
|
|
case data[p] < 12289:
|
|
switch {
|
|
case data[p] < 8304:
|
|
if 8255 <= data[p] && data[p] <= 8256 {
|
|
goto st3
|
|
}
|
|
case data[p] > 8591:
|
|
if 11264 <= data[p] && data[p] <= 12271 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
case data[p] > 55295:
|
|
switch {
|
|
case data[p] < 65008:
|
|
if 63744 <= data[p] && data[p] <= 64975 {
|
|
goto st3
|
|
}
|
|
case data[p] > 65533:
|
|
if 65536 <= data[p] && data[p] <= 983039 {
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
default:
|
|
goto st3
|
|
}
|
|
goto tr0
|
|
st_out:
|
|
_test_eof3: cs = 3; goto _test_eof
|
|
_test_eof2: cs = 2; goto _test_eof
|
|
|
|
_test_eof: {}
|
|
if p == eof {
|
|
switch cs {
|
|
case 3:
|
|
//line check_actions.rl:8
|
|
|
|
return nil
|
|
|
|
case 1, 2:
|
|
//line check_actions.rl:12
|
|
|
|
if p < len(data) {
|
|
if r := data[p]; r < unicode.MaxASCII {
|
|
return fmt.Errorf("%w: unexpected rune %q at %d", ErrInvalidTerm, data[p], p)
|
|
} else {
|
|
return fmt.Errorf("%w: unexpected rune %q (\\u%04[2]x) at %d", ErrInvalidTerm, data[p], p)
|
|
}
|
|
}
|
|
return ErrIncompleteTerm
|
|
|
|
//line check.go:338
|
|
}
|
|
}
|
|
|
|
_out: {}
|
|
}
|
|
|
|
//line check.rl:65
|
|
|
|
return ErrInvalidTerm
|
|
}
|
|
|
|
|
|
//line check.go:351
|
|
const checkLang_start int = 1
|
|
const checkLang_first_final int = 4
|
|
const checkLang_error int = 0
|
|
|
|
const checkLang_en_value int = 1
|
|
|
|
|
|
//line check.rl:81
|
|
|
|
|
|
func checkLangText(data []byte) (err error) {
|
|
var (
|
|
cs, p int
|
|
pe = len(data)
|
|
eof = pe
|
|
)
|
|
|
|
|
|
//line check.go:370
|
|
{
|
|
cs = checkLang_start
|
|
}
|
|
|
|
//line check.rl:91
|
|
|
|
|
|
//line check.go:378
|
|
{
|
|
if p == pe {
|
|
goto _test_eof
|
|
}
|
|
switch cs {
|
|
case 1:
|
|
goto st_case_1
|
|
case 0:
|
|
goto st_case_0
|
|
case 2:
|
|
goto st_case_2
|
|
case 4:
|
|
goto st_case_4
|
|
case 3:
|
|
goto st_case_3
|
|
case 5:
|
|
goto st_case_5
|
|
}
|
|
goto st_out
|
|
st_case_1:
|
|
if data[p] == 64 {
|
|
goto st2
|
|
}
|
|
goto tr0
|
|
tr0:
|
|
//line check_actions.rl:12
|
|
|
|
if p < len(data) {
|
|
if r := data[p]; r < unicode.MaxASCII {
|
|
return fmt.Errorf("%w: unexpected rune %q at %d", ErrInvalidTerm, data[p], p)
|
|
} else {
|
|
return fmt.Errorf("%w: unexpected rune %q (\\u%04[2]x) at %d", ErrInvalidTerm, data[p], p)
|
|
}
|
|
}
|
|
return ErrIncompleteTerm
|
|
|
|
goto st0
|
|
//line check.go:416
|
|
st_case_0:
|
|
st0:
|
|
cs = 0
|
|
goto _out
|
|
st2:
|
|
if p++; p == pe {
|
|
goto _test_eof2
|
|
}
|
|
st_case_2:
|
|
switch {
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st4
|
|
}
|
|
case data[p] >= 65:
|
|
goto st4
|
|
}
|
|
goto tr0
|
|
st4:
|
|
if p++; p == pe {
|
|
goto _test_eof4
|
|
}
|
|
st_case_4:
|
|
if data[p] == 45 {
|
|
goto st3
|
|
}
|
|
switch {
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st4
|
|
}
|
|
case data[p] >= 65:
|
|
goto st4
|
|
}
|
|
goto st0
|
|
st3:
|
|
if p++; p == pe {
|
|
goto _test_eof3
|
|
}
|
|
st_case_3:
|
|
switch {
|
|
case data[p] < 65:
|
|
if 48 <= data[p] && data[p] <= 57 {
|
|
goto st5
|
|
}
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st5
|
|
}
|
|
default:
|
|
goto st5
|
|
}
|
|
goto tr0
|
|
st5:
|
|
if p++; p == pe {
|
|
goto _test_eof5
|
|
}
|
|
st_case_5:
|
|
if data[p] == 45 {
|
|
goto st3
|
|
}
|
|
switch {
|
|
case data[p] < 65:
|
|
if 48 <= data[p] && data[p] <= 57 {
|
|
goto st5
|
|
}
|
|
case data[p] > 90:
|
|
if 97 <= data[p] && data[p] <= 122 {
|
|
goto st5
|
|
}
|
|
default:
|
|
goto st5
|
|
}
|
|
goto st0
|
|
st_out:
|
|
_test_eof2: cs = 2; goto _test_eof
|
|
_test_eof4: cs = 4; goto _test_eof
|
|
_test_eof3: cs = 3; goto _test_eof
|
|
_test_eof5: cs = 5; goto _test_eof
|
|
|
|
_test_eof: {}
|
|
if p == eof {
|
|
switch cs {
|
|
case 4, 5:
|
|
//line check_actions.rl:8
|
|
|
|
return nil
|
|
|
|
case 1, 2, 3:
|
|
//line check_actions.rl:12
|
|
|
|
if p < len(data) {
|
|
if r := data[p]; r < unicode.MaxASCII {
|
|
return fmt.Errorf("%w: unexpected rune %q at %d", ErrInvalidTerm, data[p], p)
|
|
} else {
|
|
return fmt.Errorf("%w: unexpected rune %q (\\u%04[2]x) at %d", ErrInvalidTerm, data[p], p)
|
|
}
|
|
}
|
|
return ErrIncompleteTerm
|
|
|
|
//line check.go:517
|
|
}
|
|
}
|
|
|
|
_out: {}
|
|
}
|
|
|
|
//line check.rl:93
|
|
|
|
return ErrInvalidTerm
|
|
}
|