Now it works even better
This commit is contained in:
parent
77f4205cea
commit
1ebb704fe4
204
zparse.go
204
zparse.go
|
@ -58,19 +58,16 @@ case 1:
|
|||
st0:
|
||||
cs = 0;
|
||||
goto _out;
|
||||
tr35:
|
||||
// line 27 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("qname {%s}\n", data[mark:p])
|
||||
hdr.Name = data[mark:p]
|
||||
}
|
||||
tr34:
|
||||
// line 29 "zparse.rl"
|
||||
{ hdr.Name = data[mark:p] }
|
||||
goto st2
|
||||
st2:
|
||||
p++
|
||||
if p == pe { goto _test_eof2 }
|
||||
fallthrough
|
||||
case 2:
|
||||
// line 74 "zparse.go"
|
||||
// line 71 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st2
|
||||
case 32: goto st2
|
||||
|
@ -90,9 +87,9 @@ case 2:
|
|||
if 48 <= data[p] && data[p] <= 57 { goto tr3 }
|
||||
goto st0
|
||||
tr3:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st3
|
||||
st3:
|
||||
|
@ -100,7 +97,7 @@ st3:
|
|||
if p == pe { goto _test_eof3 }
|
||||
fallthrough
|
||||
case 3:
|
||||
// line 104 "zparse.go"
|
||||
// line 101 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr10
|
||||
case 32: goto tr10
|
||||
|
@ -108,19 +105,15 @@ case 3:
|
|||
if 48 <= data[p] && data[p] <= 57 { goto st3 }
|
||||
goto st0
|
||||
tr10:
|
||||
// line 41 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("ttl {%s}\n", data[mark:p])
|
||||
ttl, _ := strconv.Atoi(data[mark:p])
|
||||
hdr.Ttl = uint32(ttl)
|
||||
}
|
||||
// line 33 "zparse.rl"
|
||||
{ ttl, _ := strconv.Atoi(data[mark:p]); hdr.Ttl = uint32(ttl) }
|
||||
goto st4
|
||||
st4:
|
||||
p++
|
||||
if p == pe { goto _test_eof4 }
|
||||
fallthrough
|
||||
case 4:
|
||||
// line 124 "zparse.go"
|
||||
// line 117 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st4
|
||||
case 32: goto st4
|
||||
|
@ -139,7 +132,7 @@ case 4:
|
|||
}
|
||||
goto st0
|
||||
tr13:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st5
|
||||
st5:
|
||||
|
@ -147,33 +140,26 @@ st5:
|
|||
if p == pe { goto _test_eof5 }
|
||||
fallthrough
|
||||
case 5:
|
||||
// line 151 "zparse.go"
|
||||
// line 144 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr19
|
||||
case 32: goto tr19
|
||||
case 9: goto st6
|
||||
case 32: goto st6
|
||||
case 78: goto st7
|
||||
case 110: goto st7
|
||||
}
|
||||
goto st0
|
||||
tr19:
|
||||
// line 36 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("qtype {%s}\n", data[mark:p])
|
||||
}
|
||||
goto st6
|
||||
st6:
|
||||
p++
|
||||
if p == pe { goto _test_eof6 }
|
||||
fallthrough
|
||||
case 6:
|
||||
// line 170 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr22
|
||||
case 32: goto tr22
|
||||
}
|
||||
goto tr21
|
||||
tr21:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st36
|
||||
st36:
|
||||
|
@ -181,10 +167,10 @@ st36:
|
|||
if p == pe { goto _test_eof36 }
|
||||
fallthrough
|
||||
case 36:
|
||||
// line 185 "zparse.go"
|
||||
// line 171 "zparse.go"
|
||||
goto st36
|
||||
tr22:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st37
|
||||
st37:
|
||||
|
@ -192,7 +178,7 @@ st37:
|
|||
if p == pe { goto _test_eof37 }
|
||||
fallthrough
|
||||
case 37:
|
||||
// line 196 "zparse.go"
|
||||
// line 182 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr22
|
||||
case 32: goto tr22
|
||||
|
@ -218,28 +204,20 @@ case 8:
|
|||
case 32: goto tr24
|
||||
}
|
||||
goto st0
|
||||
tr43:
|
||||
// line 41 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("ttl {%s}\n", data[mark:p])
|
||||
ttl, _ := strconv.Atoi(data[mark:p])
|
||||
hdr.Ttl = uint32(ttl)
|
||||
}
|
||||
tr42:
|
||||
// line 33 "zparse.rl"
|
||||
{ ttl, _ := strconv.Atoi(data[mark:p]); hdr.Ttl = uint32(ttl) }
|
||||
goto st9
|
||||
tr24:
|
||||
// line 31 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("qclass {%s}\n", data[mark:p])
|
||||
hdr.Class = Str_class[data[mark:p]]
|
||||
println(hdr.Class)
|
||||
}
|
||||
// line 30 "zparse.rl"
|
||||
{ hdr.Class = Str_class[data[mark:p]] }
|
||||
goto st9
|
||||
st9:
|
||||
p++
|
||||
if p == pe { goto _test_eof9 }
|
||||
fallthrough
|
||||
case 9:
|
||||
// line 243 "zparse.go"
|
||||
// line 221 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st9
|
||||
case 32: goto st9
|
||||
|
@ -250,7 +228,7 @@ case 9:
|
|||
}
|
||||
goto st0
|
||||
tr26:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st10
|
||||
st10:
|
||||
|
@ -258,20 +236,20 @@ st10:
|
|||
if p == pe { goto _test_eof10 }
|
||||
fallthrough
|
||||
case 10:
|
||||
// line 262 "zparse.go"
|
||||
// line 240 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr19
|
||||
case 32: goto tr19
|
||||
case 9: goto st6
|
||||
case 32: goto st6
|
||||
}
|
||||
goto st0
|
||||
tr6:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st11
|
||||
tr15:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st11
|
||||
st11:
|
||||
|
@ -279,7 +257,7 @@ st11:
|
|||
if p == pe { goto _test_eof11 }
|
||||
fallthrough
|
||||
case 11:
|
||||
// line 283 "zparse.go"
|
||||
// line 261 "zparse.go"
|
||||
switch data[p] {
|
||||
case 78: goto st12
|
||||
case 110: goto st12
|
||||
|
@ -331,36 +309,29 @@ st16:
|
|||
fallthrough
|
||||
case 16:
|
||||
switch data[p] {
|
||||
case 9: goto tr32
|
||||
case 32: goto tr32
|
||||
case 9: goto st17
|
||||
case 32: goto st17
|
||||
}
|
||||
goto st0
|
||||
tr32:
|
||||
// line 36 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("qtype {%s}\n", data[mark:p])
|
||||
}
|
||||
goto st17
|
||||
st17:
|
||||
p++
|
||||
if p == pe { goto _test_eof17 }
|
||||
fallthrough
|
||||
case 17:
|
||||
// line 350 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st17
|
||||
case 32: goto st17
|
||||
case 46: goto tr34
|
||||
case 92: goto tr34
|
||||
case 46: goto tr33
|
||||
case 92: goto tr33
|
||||
}
|
||||
if data[p] > 57 {
|
||||
if 97 <= data[p] && data[p] <= 122 { goto tr34 }
|
||||
if 97 <= data[p] && data[p] <= 122 { goto tr33 }
|
||||
} else if data[p] >= 48 {
|
||||
goto tr34
|
||||
goto tr33
|
||||
}
|
||||
goto st0
|
||||
tr34:
|
||||
// line 25 "zparse.rl"
|
||||
tr33:
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st38
|
||||
st38:
|
||||
|
@ -368,7 +339,7 @@ st38:
|
|||
if p == pe { goto _test_eof38 }
|
||||
fallthrough
|
||||
case 38:
|
||||
// line 372 "zparse.go"
|
||||
// line 343 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st2
|
||||
case 32: goto st2
|
||||
|
@ -389,8 +360,8 @@ st39:
|
|||
fallthrough
|
||||
case 39:
|
||||
switch data[p] {
|
||||
case 9: goto tr35
|
||||
case 32: goto tr35
|
||||
case 9: goto tr34
|
||||
case 32: goto tr34
|
||||
case 46: goto st39
|
||||
case 92: goto st39
|
||||
}
|
||||
|
@ -408,8 +379,8 @@ st18:
|
|||
fallthrough
|
||||
case 18:
|
||||
switch data[p] {
|
||||
case 9: goto tr35
|
||||
case 32: goto tr35
|
||||
case 9: goto tr34
|
||||
case 32: goto tr34
|
||||
case 46: goto st18
|
||||
case 92: goto st18
|
||||
}
|
||||
|
@ -422,7 +393,7 @@ case 18:
|
|||
}
|
||||
goto st0
|
||||
tr14:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st19
|
||||
st19:
|
||||
|
@ -430,7 +401,7 @@ st19:
|
|||
if p == pe { goto _test_eof19 }
|
||||
fallthrough
|
||||
case 19:
|
||||
// line 434 "zparse.go"
|
||||
// line 405 "zparse.go"
|
||||
switch data[p] {
|
||||
case 72: goto st8
|
||||
case 83: goto st8
|
||||
|
@ -439,7 +410,7 @@ case 19:
|
|||
}
|
||||
goto st0
|
||||
tr16:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st20
|
||||
st20:
|
||||
|
@ -447,14 +418,14 @@ st20:
|
|||
if p == pe { goto _test_eof20 }
|
||||
fallthrough
|
||||
case 20:
|
||||
// line 451 "zparse.go"
|
||||
// line 422 "zparse.go"
|
||||
switch data[p] {
|
||||
case 83: goto st8
|
||||
case 115: goto st8
|
||||
}
|
||||
goto st0
|
||||
tr17:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st21
|
||||
st21:
|
||||
|
@ -462,14 +433,14 @@ st21:
|
|||
if p == pe { goto _test_eof21 }
|
||||
fallthrough
|
||||
case 21:
|
||||
// line 466 "zparse.go"
|
||||
// line 437 "zparse.go"
|
||||
switch data[p] {
|
||||
case 78: goto st8
|
||||
case 110: goto st8
|
||||
}
|
||||
goto st0
|
||||
tr18:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st22
|
||||
st22:
|
||||
|
@ -477,7 +448,7 @@ st22:
|
|||
if p == pe { goto _test_eof22 }
|
||||
fallthrough
|
||||
case 22:
|
||||
// line 481 "zparse.go"
|
||||
// line 452 "zparse.go"
|
||||
switch data[p] {
|
||||
case 79: goto st23
|
||||
case 111: goto st23
|
||||
|
@ -504,9 +475,9 @@ case 24:
|
|||
}
|
||||
goto st0
|
||||
tr4:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st25
|
||||
st25:
|
||||
|
@ -514,10 +485,10 @@ st25:
|
|||
if p == pe { goto _test_eof25 }
|
||||
fallthrough
|
||||
case 25:
|
||||
// line 518 "zparse.go"
|
||||
// line 489 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr19
|
||||
case 32: goto tr19
|
||||
case 9: goto st6
|
||||
case 32: goto st6
|
||||
case 78: goto st26
|
||||
case 110: goto st26
|
||||
}
|
||||
|
@ -538,24 +509,20 @@ st27:
|
|||
fallthrough
|
||||
case 27:
|
||||
switch data[p] {
|
||||
case 9: goto tr40
|
||||
case 32: goto tr40
|
||||
case 9: goto tr39
|
||||
case 32: goto tr39
|
||||
}
|
||||
goto st0
|
||||
tr40:
|
||||
// line 31 "zparse.rl"
|
||||
{
|
||||
fmt.Printf("qclass {%s}\n", data[mark:p])
|
||||
hdr.Class = Str_class[data[mark:p]]
|
||||
println(hdr.Class)
|
||||
}
|
||||
tr39:
|
||||
// line 30 "zparse.rl"
|
||||
{ hdr.Class = Str_class[data[mark:p]] }
|
||||
goto st28
|
||||
st28:
|
||||
p++
|
||||
if p == pe { goto _test_eof28 }
|
||||
fallthrough
|
||||
case 28:
|
||||
// line 559 "zparse.go"
|
||||
// line 526 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto st28
|
||||
case 32: goto st28
|
||||
|
@ -564,10 +531,10 @@ case 28:
|
|||
case 97: goto tr26
|
||||
case 100: goto tr15
|
||||
}
|
||||
if 48 <= data[p] && data[p] <= 57 { goto tr42 }
|
||||
if 48 <= data[p] && data[p] <= 57 { goto tr41 }
|
||||
goto st0
|
||||
tr42:
|
||||
// line 25 "zparse.rl"
|
||||
tr41:
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
goto st29
|
||||
st29:
|
||||
|
@ -575,17 +542,17 @@ st29:
|
|||
if p == pe { goto _test_eof29 }
|
||||
fallthrough
|
||||
case 29:
|
||||
// line 579 "zparse.go"
|
||||
// line 546 "zparse.go"
|
||||
switch data[p] {
|
||||
case 9: goto tr43
|
||||
case 32: goto tr43
|
||||
case 9: goto tr42
|
||||
case 32: goto tr42
|
||||
}
|
||||
if 48 <= data[p] && data[p] <= 57 { goto st29 }
|
||||
goto st0
|
||||
tr5:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st30
|
||||
st30:
|
||||
|
@ -593,7 +560,7 @@ st30:
|
|||
if p == pe { goto _test_eof30 }
|
||||
fallthrough
|
||||
case 30:
|
||||
// line 597 "zparse.go"
|
||||
// line 564 "zparse.go"
|
||||
switch data[p] {
|
||||
case 72: goto st27
|
||||
case 83: goto st27
|
||||
|
@ -602,9 +569,9 @@ case 30:
|
|||
}
|
||||
goto st0
|
||||
tr7:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st31
|
||||
st31:
|
||||
|
@ -612,16 +579,16 @@ st31:
|
|||
if p == pe { goto _test_eof31 }
|
||||
fallthrough
|
||||
case 31:
|
||||
// line 616 "zparse.go"
|
||||
// line 583 "zparse.go"
|
||||
switch data[p] {
|
||||
case 83: goto st27
|
||||
case 115: goto st27
|
||||
}
|
||||
goto st0
|
||||
tr8:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st32
|
||||
st32:
|
||||
|
@ -629,16 +596,16 @@ st32:
|
|||
if p == pe { goto _test_eof32 }
|
||||
fallthrough
|
||||
case 32:
|
||||
// line 633 "zparse.go"
|
||||
// line 600 "zparse.go"
|
||||
switch data[p] {
|
||||
case 78: goto st27
|
||||
case 110: goto st27
|
||||
}
|
||||
goto st0
|
||||
tr9:
|
||||
// line 25 "zparse.rl"
|
||||
// line 28 "zparse.rl"
|
||||
{ mark = p }
|
||||
// line 40 "zparse.rl"
|
||||
// line 32 "zparse.rl"
|
||||
{ fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
goto st33
|
||||
st33:
|
||||
|
@ -646,7 +613,7 @@ st33:
|
|||
if p == pe { goto _test_eof33 }
|
||||
fallthrough
|
||||
case 33:
|
||||
// line 650 "zparse.go"
|
||||
// line 617 "zparse.go"
|
||||
switch data[p] {
|
||||
case 79: goto st34
|
||||
case 111: goto st34
|
||||
|
@ -716,23 +683,22 @@ case 35:
|
|||
if p == eof {
|
||||
switch cs {
|
||||
case 36, 37:
|
||||
// line 47 "zparse.rl"
|
||||
// line 35 "zparse.rl"
|
||||
{
|
||||
r = new(RR_A)
|
||||
r.(*RR_A).Hdr = *hdr
|
||||
r.(*RR_A).Hdr.Rrtype = TypeA
|
||||
r.(*RR_A).A = net.ParseIP(data[mark:p])
|
||||
println("Setting")
|
||||
}
|
||||
break
|
||||
// line 729 "zparse.go"
|
||||
// line 695 "zparse.go"
|
||||
}
|
||||
}
|
||||
|
||||
_out: {}
|
||||
}
|
||||
|
||||
// line 82 "zparse.rl"
|
||||
// line 68 "zparse.rl"
|
||||
|
||||
|
||||
if cs < z_first_final {
|
||||
|
|
40
zparse.rl
40
zparse.rl
|
@ -22,55 +22,41 @@ func zparse(data string) (r RR, err os.Error) {
|
|||
hdr := new(RR_Header)
|
||||
|
||||
%%{
|
||||
action mark { mark = p }
|
||||
action rdata_out { fmt.Printf("rdata {%s}\n", data[mark:p]) }
|
||||
action qname_out {
|
||||
fmt.Printf("qname {%s}\n", data[mark:p])
|
||||
hdr.Name = data[mark:p]
|
||||
}
|
||||
action qclass_out {
|
||||
fmt.Printf("qclass {%s}\n", data[mark:p])
|
||||
hdr.Class = Str_class[data[mark:p]]
|
||||
println(hdr.Class)
|
||||
}
|
||||
action qtype_out {
|
||||
fmt.Printf("qtype {%s}\n", data[mark:p])
|
||||
}
|
||||
# action rdata_out { fmt.Printf("rdata {%s}\n", data[mark:p]) }
|
||||
# action qtype_out { fmt.Printf("qtype {%s}\n", data[mark:p]) }
|
||||
|
||||
action mark { mark = p }
|
||||
action qname { hdr.Name = data[mark:p] }
|
||||
action qclass { hdr.Class = Str_class[data[mark:p]] }
|
||||
|
||||
action defTtl { fmt.Printf("defttl {%s}\n", data[mark:p]) }
|
||||
action setTtl {
|
||||
fmt.Printf("ttl {%s}\n", data[mark:p])
|
||||
ttl, _ := strconv.Atoi(data[mark:p])
|
||||
hdr.Ttl = uint32(ttl)
|
||||
}
|
||||
action setTtl { ttl, _ := strconv.Atoi(data[mark:p]); hdr.Ttl = uint32(ttl) }
|
||||
|
||||
action rdata_a {
|
||||
r = new(RR_A)
|
||||
r.(*RR_A).Hdr = *hdr
|
||||
r.(*RR_A).Hdr.Rrtype = TypeA
|
||||
r.(*RR_A).A = net.ParseIP(data[mark:p])
|
||||
println("Setting")
|
||||
}
|
||||
|
||||
|
||||
qtype = ('IN'i|'CS'i|'CH'i|'HS'i|'ANY'i|'NONE'i) %qclass_out;
|
||||
qclass = ('IN'i|'CS'i|'CH'i|'HS'i|'ANY'i|'NONE'i) %qclass;
|
||||
ttl = digit+ >mark;
|
||||
blank = [ \t]+ %mark;
|
||||
qname = [a-zA-Z0-9.\\]+ %qname_out;
|
||||
qname = [a-zA-Z0-9.\\]+ %qname;
|
||||
|
||||
# RDATA definitions
|
||||
rdata_a = any+ $1 %0 %rdata_a;
|
||||
rdata_dnskey = [a-z0-9.\\]+;
|
||||
|
||||
lhs = qname? blank %defTtl (
|
||||
(ttl %setTtl blank (qtype blank)?)
|
||||
| (qtype blank (ttl %setTtl blank)?)
|
||||
(ttl %setTtl blank (qclass blank)?)
|
||||
| (qclass blank (ttl %setTtl blank)?)
|
||||
)?;
|
||||
|
||||
# RR definitions
|
||||
rhs = (
|
||||
('A'i %qtype_out blank rdata_a)
|
||||
| ('DNSKEY'i %qtype_out blank rdata_dnskey)
|
||||
('A'i blank rdata_a)
|
||||
| ('DNSKEY'i blank rdata_dnskey)
|
||||
);
|
||||
|
||||
rr = lhs rhs;
|
||||
|
|
Loading…
Reference in New Issue