parse ns types
This commit is contained in:
parent
b9ad178652
commit
73ac4b6039
382
parser.go
382
parser.go
@ -362,11 +362,11 @@ const yyEofCode = 1
|
|||||||
const yyErrCode = 2
|
const yyErrCode = 2
|
||||||
const yyInitialStackSize = 16
|
const yyInitialStackSize = 16
|
||||||
|
|
||||||
//line parser.y:335
|
//line parser.y:347
|
||||||
const src = `<?
|
const src = `<?
|
||||||
namespace foo\bar\test;
|
namespace foo\bar\test;
|
||||||
|
|
||||||
function test(array $a, array $b) {
|
function test(string $a, \bar\baz $b) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -384,9 +384,9 @@ var yyExca = [...]int{
|
|||||||
-1, 1,
|
-1, 1,
|
||||||
1, -1,
|
1, -1,
|
||||||
-2, 0,
|
-2, 0,
|
||||||
-1, 112,
|
-1, 113,
|
||||||
162, 100,
|
162, 104,
|
||||||
-2, 104,
|
-2, 108,
|
||||||
}
|
}
|
||||||
|
|
||||||
const yyPrivate = 57344
|
const yyPrivate = 57344
|
||||||
@ -395,35 +395,35 @@ const yyLast = 236
|
|||||||
|
|
||||||
var yyAct = [...]int{
|
var yyAct = [...]int{
|
||||||
|
|
||||||
26, 27, 28, 29, 30, 125, 31, 32, 33, 69,
|
26, 27, 28, 29, 30, 130, 31, 32, 33, 69,
|
||||||
70, 112, 124, 114, 135, 113, 110, 102, 101, 103,
|
70, 113, 129, 115, 95, 143, 114, 111, 103, 102,
|
||||||
134, 122, 123, 95, 119, 120, 137, 117, 14, 15,
|
141, 136, 104, 96, 120, 118, 145, 126, 14, 15,
|
||||||
111, 109, 108, 100, 94, 128, 97, 121, 13, 131,
|
95, 121, 112, 110, 109, 93, 101, 133, 98, 138,
|
||||||
126, 107, 106, 18, 8, 4, 19, 1, 116, 115,
|
131, 13, 108, 107, 18, 8, 4, 19, 1, 117,
|
||||||
99, 130, 34, 118, 5, 11, 104, 2, 93, 3,
|
116, 137, 34, 100, 119, 5, 11, 105, 2, 123,
|
||||||
16, 96, 133, 127, 0, 0, 35, 36, 39, 40,
|
94, 3, 16, 124, 125, 97, 35, 36, 39, 40,
|
||||||
41, 20, 21, 22, 23, 24, 25, 37, 38, 98,
|
41, 20, 21, 22, 23, 24, 25, 37, 38, 99,
|
||||||
6, 17, 0, 0, 0, 0, 0, 14, 15, 0,
|
6, 17, 128, 140, 132, 127, 0, 14, 15, 122,
|
||||||
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
42, 43, 44, 45, 46, 47, 48, 49, 50, 51,
|
||||||
52, 72, 73, 74, 75, 76, 64, 65, 66, 67,
|
52, 72, 73, 74, 75, 76, 64, 65, 66, 67,
|
||||||
68, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
68, 53, 54, 55, 56, 57, 58, 59, 60, 61,
|
||||||
62, 63, 0, 84, 82, 83, 79, 80, 0, 71,
|
62, 63, 0, 84, 82, 83, 79, 80, 0, 71,
|
||||||
77, 78, 85, 86, 88, 87, 89, 90, 12, 14,
|
77, 78, 85, 86, 88, 87, 89, 90, 12, 14,
|
||||||
15, 122, 123, 0, 0, 0, 0, 129, 0, 81,
|
15, 0, 0, 0, 95, 0, 0, 0, 0, 81,
|
||||||
92, 91, 14, 15, 132, 0, 136, 0, 0, 138,
|
92, 91, 14, 15, 134, 135, 0, 139, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 144, 142, 0, 0, 146, 0, 0,
|
||||||
9, 139, 0, 0, 0, 0, 0, 0, 0, 0,
|
9, 147, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
|
0, 0, 0, 0, 0, 0, 0, 0, 10, 0,
|
||||||
12, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
12, 0, 0, 124, 125, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 12, 0, 0, 0, 0, 0, 0,
|
0, 0, 0, 12, 0, 0, 0, 0, 0, 0,
|
||||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
0, 0, 128, 0, 0, 127, 0, 0, 0, 0,
|
||||||
0, 0, 9, 105, 0, 0, 0, 0, 0, 7,
|
0, 0, 9, 106, 0, 0, 0, 0, 0, 7,
|
||||||
0, 0, 0, 0, 0, 9,
|
0, 0, 0, 0, 0, 9,
|
||||||
}
|
}
|
||||||
var yyPact = [...]int{
|
var yyPact = [...]int{
|
||||||
|
|
||||||
-1000, -1000, 76, -1000, -1000, -1000, -4, -51, -1000, -1000,
|
-1000, -1000, 76, -1000, -1000, -1000, -4, -55, -1000, -1000,
|
||||||
-1, -48, -52, -1000, -1000, -1000, -140, -1000, -1000, -1000,
|
1, -48, -49, -1000, -1000, -1000, -139, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
@ -431,32 +431,34 @@ var yyPact = [...]int{
|
|||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
-1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000, -1000,
|
||||||
-1000, -1000, -1000, -139, -1000, 63, -53, -1000, -54, -1000,
|
-1000, -1000, -1000, -140, -134, -1000, 63, -51, -1000, -52,
|
||||||
-143, -1000, -55, -1000, -1000, -1000, -1000, -1000, -150, -144,
|
-1000, -142, -1000, -1000, -53, -1000, -1000, -1000, -1000, -150,
|
||||||
-147, -1000, 7, -148, -1000, -157, 31, -1000, -2, -1000,
|
-143, -147, -1000, 59, -148, -1000, -157, 31, -1000, 0,
|
||||||
-1000, -113, -1000, -1000, -1000, 8, 7, -137, -1000, -1000,
|
-1000, -1000, -71, -1000, -1000, -1000, -1000, -55, -135, -1000,
|
||||||
-145, 7, -1000, -61, -1000, -1000, -1000, -1000, 11, -1000,
|
8, 59, -137, -1000, -1000, -1000, -55, -144, 59, -1000,
|
||||||
|
-61, -1000, -1000, -1000, -1000, -1000, 11, -1000,
|
||||||
}
|
}
|
||||||
var yyPgo = [...]int{
|
var yyPgo = [...]int{
|
||||||
|
|
||||||
0, 38, 63, 62, 61, 60, 59, 58, 57, 42,
|
0, 41, 84, 83, 65, 62, 61, 27, 60, 59,
|
||||||
56, 23, 55, 41, 54, 53, 51, 24, 25, 49,
|
58, 43, 57, 23, 56, 42, 55, 54, 51, 24,
|
||||||
48, 27, 47, 46, 43,
|
31, 50, 49, 25, 48, 47, 44,
|
||||||
}
|
}
|
||||||
var yyR1 = [...]int{
|
var yyR1 = [...]int{
|
||||||
|
|
||||||
0, 22, 23, 23, 23, 23, 23, 23, 23, 23,
|
0, 24, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 25,
|
||||||
23, 23, 23, 23, 23, 23, 23, 23, 23, 24,
|
25, 25, 25, 25, 25, 25, 25, 25, 25, 26,
|
||||||
24, 24, 24, 24, 24, 24, 5, 5, 7, 7,
|
26, 26, 26, 26, 26, 26, 5, 5, 8, 8,
|
||||||
8, 8, 6, 6, 6, 6, 6, 11, 11, 10,
|
7, 9, 9, 9, 10, 10, 6, 6, 6, 6,
|
||||||
10, 9, 13, 13, 12, 12, 1, 1, 14, 19,
|
6, 13, 13, 12, 12, 11, 15, 15, 14, 14,
|
||||||
19, 20, 20, 21, 15, 15, 4, 4, 2, 2,
|
1, 1, 16, 21, 21, 22, 22, 23, 17, 17,
|
||||||
3, 3, 17, 17, 18, 18, 16, 16,
|
4, 4, 2, 2, 3, 3, 19, 19, 20, 20,
|
||||||
|
20, 18, 18,
|
||||||
}
|
}
|
||||||
var yyR2 = [...]int{
|
var yyR2 = [...]int{
|
||||||
|
|
||||||
@ -468,15 +470,16 @@ var yyR2 = [...]int{
|
|||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
|
1, 1, 1, 1, 1, 1, 1, 1, 1, 3,
|
||||||
2, 0, 1, 1, 3, 3, 1, 2, 0, 1,
|
1, 1, 2, 3, 2, 0, 1, 1, 3, 3,
|
||||||
1, 3, 5, 4, 1, 2, 1, 1, 10, 1,
|
1, 2, 0, 1, 1, 3, 5, 4, 1, 2,
|
||||||
0, 1, 3, 4, 0, 1, 0, 1, 0, 1,
|
1, 1, 10, 1, 0, 1, 3, 4, 0, 1,
|
||||||
0, 1, 1, 2, 1, 1, 0, 2,
|
0, 1, 0, 1, 0, 1, 1, 2, 1, 1,
|
||||||
|
1, 0, 2,
|
||||||
}
|
}
|
||||||
var yyChk = [...]int{
|
var yyChk = [...]int{
|
||||||
|
|
||||||
-1000, -22, -8, -6, -9, -14, 4, 153, -13, 159,
|
-1000, -24, -10, -6, -11, -16, 4, 153, -15, 159,
|
||||||
112, -12, 127, -1, 76, 77, -5, 85, -24, -23,
|
112, -14, 127, -1, 76, 77, -5, 85, -26, -25,
|
||||||
75, 76, 77, 78, 79, 80, 4, 5, 6, 7,
|
75, 76, 77, 78, 79, 80, 4, 5, 6, 7,
|
||||||
8, 10, 11, 12, 56, 70, 71, 81, 82, 72,
|
8, 10, 11, 12, 56, 70, 71, 81, 82, 72,
|
||||||
73, 74, 94, 95, 96, 97, 98, 99, 100, 101,
|
73, 74, 94, 95, 96, 97, 98, 99, 100, 101,
|
||||||
@ -484,16 +487,17 @@ var yyChk = [...]int{
|
|||||||
122, 123, 124, 125, 110, 111, 112, 113, 114, 13,
|
122, 123, 124, 125, 110, 111, 112, 113, 114, 13,
|
||||||
14, 133, 105, 106, 107, 108, 109, 134, 135, 130,
|
14, 133, 105, 106, 107, 108, 109, 134, 135, 130,
|
||||||
131, 153, 128, 129, 127, 136, 137, 139, 138, 140,
|
131, 153, 128, 129, 127, 136, 137, 139, 138, 140,
|
||||||
141, 155, 154, -7, 85, -11, -4, 37, 127, -1,
|
141, 155, 154, -7, -8, 85, -13, -4, 37, 127,
|
||||||
85, 158, 156, 158, -10, 160, -9, -13, 85, 85,
|
-1, 85, 158, 158, 156, -12, 160, -11, -15, 85,
|
||||||
159, 85, 161, 159, 160, -19, -20, -21, -15, -17,
|
85, 159, 85, 161, 159, 160, -21, -22, -23, -17,
|
||||||
-18, 30, 134, 135, 160, 162, 9, -2, 37, -18,
|
-19, -20, 30, -9, 134, 135, -7, 156, 153, 160,
|
||||||
-16, 31, -21, -3, 157, 159, -17, 87, -11, 160,
|
162, 9, -2, 37, -20, -7, 156, -18, 31, -23,
|
||||||
|
-3, 157, -7, 159, -19, 87, -13, 160,
|
||||||
}
|
}
|
||||||
var yyDef = [...]int{
|
var yyDef = [...]int{
|
||||||
|
|
||||||
81, -2, 1, 80, 82, 83, 0, 0, 86, 88,
|
85, -2, 1, 84, 86, 87, 0, 0, 90, 92,
|
||||||
106, 0, 0, 94, 96, 97, 0, 76, 77, 69,
|
110, 0, 0, 98, 100, 101, 0, 76, 77, 69,
|
||||||
70, 71, 72, 73, 74, 75, 2, 3, 4, 5,
|
70, 71, 72, 73, 74, 75, 2, 3, 4, 5,
|
||||||
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
|
||||||
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
|
16, 17, 18, 19, 20, 21, 22, 23, 24, 25,
|
||||||
@ -501,11 +505,12 @@ var yyDef = [...]int{
|
|||||||
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
|
36, 37, 38, 39, 40, 41, 42, 43, 44, 45,
|
||||||
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
|
46, 47, 48, 49, 50, 51, 52, 53, 54, 55,
|
||||||
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
|
56, 57, 58, 59, 60, 61, 62, 63, 64, 65,
|
||||||
66, 67, 68, 0, 78, 0, 0, 107, 0, 95,
|
66, 67, 68, 0, 80, 78, 0, 0, 111, 0,
|
||||||
0, 84, 0, 85, 87, 91, 89, 90, 0, 0,
|
99, 0, 88, 89, 0, 91, 95, 93, 94, 0,
|
||||||
0, 79, -2, 0, 93, 0, 99, 101, 108, 105,
|
0, 0, 79, -2, 0, 97, 0, 103, 105, 112,
|
||||||
112, 0, 114, 115, 92, 116, 104, 110, 109, 113,
|
109, 116, 0, 118, 119, 120, 81, 0, 0, 96,
|
||||||
0, 0, 102, 0, 111, 88, 117, 103, 0, 98,
|
121, 108, 114, 113, 117, 82, 0, 0, 0, 106,
|
||||||
|
0, 115, 83, 92, 122, 107, 0, 102,
|
||||||
}
|
}
|
||||||
var yyTok1 = [...]int{
|
var yyTok1 = [...]int{
|
||||||
|
|
||||||
@ -883,147 +888,170 @@ yydefault:
|
|||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:199
|
//line parser.y:201
|
||||||
{
|
{
|
||||||
fmt.Println(yyDollar[1].node)
|
fmt.Println(yyDollar[1].node)
|
||||||
}
|
}
|
||||||
case 76:
|
case 76:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:218
|
//line parser.y:220
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("identifier")
|
yyVAL.node = Node("identifier")
|
||||||
}
|
}
|
||||||
case 77:
|
case 77:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:219
|
//line parser.y:221
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("reserved")
|
yyVAL.node = Node("reserved")
|
||||||
}
|
}
|
||||||
case 78:
|
case 78:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:223
|
//line parser.y:225
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Namespace").append(Node(yyDollar[1].token))
|
yyVAL.node = Node("NamespaceParts").append(Node(yyDollar[1].token))
|
||||||
}
|
}
|
||||||
case 79:
|
case 79:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line parser.y:224
|
//line parser.y:226
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node.append(Node(yyDollar[3].token))
|
yyVAL.node = yyDollar[1].node.append(Node(yyDollar[3].token))
|
||||||
}
|
}
|
||||||
case 80:
|
case 80:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:228
|
//line parser.y:230
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node.append(yyDollar[2].node)
|
yyVAL.node = Node("Namespace").append(yyDollar[1].node)
|
||||||
}
|
}
|
||||||
case 81:
|
case 81:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
|
||||||
//line parser.y:229
|
|
||||||
{
|
|
||||||
yyVAL.node = Node("Statements")
|
|
||||||
}
|
|
||||||
case 82:
|
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
|
||||||
//line parser.y:233
|
|
||||||
{
|
|
||||||
yyVAL.node = yyDollar[1].node
|
|
||||||
}
|
|
||||||
case 83:
|
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:234
|
//line parser.y:234
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = Node("Name").append(yyDollar[1].node)
|
||||||
}
|
}
|
||||||
case 84:
|
case 82:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line parser.y:235
|
//line parser.y:235
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[2].node /*TODO: identifier stub, refactor it*/
|
yyVAL.node = Node("Name").append(yyDollar[2].node).attribute("FullyQualified", "true")
|
||||||
}
|
}
|
||||||
case 85:
|
case 83:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line parser.y:236
|
//line parser.y:236
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[2].node
|
yyVAL.node = Node("Name").append(yyDollar[3].node).attribute("Relative", "true")
|
||||||
|
}
|
||||||
|
case 84:
|
||||||
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
|
//line parser.y:240
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[1].node.append(yyDollar[2].node)
|
||||||
|
}
|
||||||
|
case 85:
|
||||||
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
|
//line parser.y:241
|
||||||
|
{
|
||||||
|
yyVAL.node = Node("Statements")
|
||||||
}
|
}
|
||||||
case 86:
|
case 86:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:237
|
//line parser.y:245
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 87:
|
case 87:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
|
||||||
//line parser.y:241
|
|
||||||
{
|
|
||||||
yyVAL.node = yyDollar[1].node.append(yyDollar[2].node)
|
|
||||||
}
|
|
||||||
case 88:
|
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
|
||||||
//line parser.y:242
|
|
||||||
{
|
|
||||||
yyVAL.node = Node("statement_list")
|
|
||||||
}
|
|
||||||
case 89:
|
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:246
|
//line parser.y:246
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
|
case 88:
|
||||||
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
|
//line parser.y:247
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[2].node /*TODO: identifier stub, refactor it*/
|
||||||
|
}
|
||||||
|
case 89:
|
||||||
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
|
//line parser.y:248
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[2].node
|
||||||
|
}
|
||||||
case 90:
|
case 90:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:247
|
//line parser.y:249
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 91:
|
case 91:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line parser.y:250
|
|
||||||
{
|
|
||||||
yyVAL.node = yyDollar[2].node
|
|
||||||
}
|
|
||||||
case 92:
|
|
||||||
yyDollar = yyS[yypt-5 : yypt+1]
|
|
||||||
//line parser.y:253
|
//line parser.y:253
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node.attribute("name", yyDollar[3].token)
|
yyVAL.node = yyDollar[1].node.append(yyDollar[2].node)
|
||||||
}
|
}
|
||||||
case 93:
|
case 92:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line parser.y:254
|
//line parser.y:254
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Class").attribute("name", yyDollar[2].token)
|
yyVAL.node = Node("statement_list")
|
||||||
|
}
|
||||||
|
case 93:
|
||||||
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
|
//line parser.y:258
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 94:
|
case 94:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:257
|
//line parser.y:259
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[1].node
|
||||||
|
}
|
||||||
|
case 95:
|
||||||
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
|
//line parser.y:262
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[2].node
|
||||||
|
}
|
||||||
|
case 96:
|
||||||
|
yyDollar = yyS[yypt-5 : yypt+1]
|
||||||
|
//line parser.y:265
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[1].node.attribute("name", yyDollar[3].token)
|
||||||
|
}
|
||||||
|
case 97:
|
||||||
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
|
//line parser.y:266
|
||||||
|
{
|
||||||
|
yyVAL.node = Node("Class").attribute("name", yyDollar[2].token)
|
||||||
|
}
|
||||||
|
case 98:
|
||||||
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
|
//line parser.y:269
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Class").attribute(yyDollar[1].value, "true")
|
yyVAL.node = Node("Class").attribute(yyDollar[1].value, "true")
|
||||||
}
|
}
|
||||||
case 95:
|
case 99:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line parser.y:258
|
//line parser.y:270
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node.attribute(yyDollar[2].value, "true")
|
yyVAL.node = yyDollar[1].node.attribute(yyDollar[2].value, "true")
|
||||||
}
|
}
|
||||||
case 96:
|
case 100:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:262
|
//line parser.y:274
|
||||||
{
|
{
|
||||||
yyVAL.value = "abstract"
|
yyVAL.value = "abstract"
|
||||||
}
|
}
|
||||||
case 97:
|
case 101:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:263
|
//line parser.y:275
|
||||||
{
|
{
|
||||||
yyVAL.value = "final"
|
yyVAL.value = "final"
|
||||||
}
|
}
|
||||||
case 98:
|
case 102:
|
||||||
yyDollar = yyS[yypt-10 : yypt+1]
|
yyDollar = yyS[yypt-10 : yypt+1]
|
||||||
//line parser.y:268
|
//line parser.y:280
|
||||||
{
|
{
|
||||||
fmt.Println("adsfadsf")
|
|
||||||
yyVAL.node = Node("Function").
|
yyVAL.node = Node("Function").
|
||||||
attribute("name", yyDollar[3].token).
|
attribute("name", yyDollar[3].token).
|
||||||
attribute("returns_ref", yyDollar[2].value).
|
attribute("returns_ref", yyDollar[2].value).
|
||||||
@ -1031,33 +1059,33 @@ yydefault:
|
|||||||
append(yyDollar[7].node).
|
append(yyDollar[7].node).
|
||||||
append(yyDollar[9].node)
|
append(yyDollar[9].node)
|
||||||
}
|
}
|
||||||
case 99:
|
case 103:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:280
|
//line parser.y:291
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 100:
|
case 104:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line parser.y:281
|
//line parser.y:292
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Parameter list")
|
yyVAL.node = Node("Parameter list")
|
||||||
}
|
}
|
||||||
case 101:
|
case 105:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:284
|
//line parser.y:295
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Parameter list").append(yyDollar[1].node)
|
yyVAL.node = Node("Parameter list").append(yyDollar[1].node)
|
||||||
}
|
}
|
||||||
case 102:
|
case 106:
|
||||||
yyDollar = yyS[yypt-3 : yypt+1]
|
yyDollar = yyS[yypt-3 : yypt+1]
|
||||||
//line parser.y:285
|
//line parser.y:296
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node.append(yyDollar[3].node)
|
yyVAL.node = yyDollar[1].node.append(yyDollar[3].node)
|
||||||
}
|
}
|
||||||
case 103:
|
case 107:
|
||||||
yyDollar = yyS[yypt-4 : yypt+1]
|
yyDollar = yyS[yypt-4 : yypt+1]
|
||||||
//line parser.y:289
|
//line parser.y:300
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("Parameter").
|
yyVAL.node = Node("Parameter").
|
||||||
append(yyDollar[1].node).
|
append(yyDollar[1].node).
|
||||||
@ -1065,88 +1093,94 @@ yydefault:
|
|||||||
attribute("is_variadic", yyDollar[3].value).
|
attribute("is_variadic", yyDollar[3].value).
|
||||||
attribute("var", yyDollar[4].token)
|
attribute("var", yyDollar[4].token)
|
||||||
}
|
}
|
||||||
case 104:
|
case 108:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line parser.y:299
|
//line parser.y:310
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("No type")
|
yyVAL.node = Node("No type")
|
||||||
}
|
}
|
||||||
case 105:
|
case 109:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:300
|
//line parser.y:311
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 106:
|
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
|
||||||
//line parser.y:304
|
|
||||||
{
|
|
||||||
yyVAL.value = "false"
|
|
||||||
}
|
|
||||||
case 107:
|
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
|
||||||
//line parser.y:305
|
|
||||||
{
|
|
||||||
yyVAL.value = "true"
|
|
||||||
}
|
|
||||||
case 108:
|
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
|
||||||
//line parser.y:309
|
|
||||||
{
|
|
||||||
yyVAL.value = "false"
|
|
||||||
}
|
|
||||||
case 109:
|
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
|
||||||
//line parser.y:310
|
|
||||||
{
|
|
||||||
yyVAL.value = "true"
|
|
||||||
}
|
|
||||||
case 110:
|
case 110:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line parser.y:314
|
//line parser.y:315
|
||||||
{
|
{
|
||||||
yyVAL.value = "false"
|
yyVAL.value = "false"
|
||||||
}
|
}
|
||||||
case 111:
|
case 111:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:315
|
//line parser.y:316
|
||||||
{
|
{
|
||||||
yyVAL.value = "true"
|
yyVAL.value = "true"
|
||||||
}
|
}
|
||||||
case 112:
|
case 112:
|
||||||
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
|
//line parser.y:320
|
||||||
|
{
|
||||||
|
yyVAL.value = "false"
|
||||||
|
}
|
||||||
|
case 113:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:319
|
//line parser.y:321
|
||||||
|
{
|
||||||
|
yyVAL.value = "true"
|
||||||
|
}
|
||||||
|
case 114:
|
||||||
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
|
//line parser.y:325
|
||||||
|
{
|
||||||
|
yyVAL.value = "false"
|
||||||
|
}
|
||||||
|
case 115:
|
||||||
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
|
//line parser.y:326
|
||||||
|
{
|
||||||
|
yyVAL.value = "true"
|
||||||
|
}
|
||||||
|
case 116:
|
||||||
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
|
//line parser.y:330
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[1].node
|
yyVAL.node = yyDollar[1].node
|
||||||
}
|
}
|
||||||
case 113:
|
case 117:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line parser.y:320
|
//line parser.y:331
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[2].node
|
yyVAL.node = yyDollar[2].node
|
||||||
yyVAL.node.attribute("nullable", "true")
|
yyVAL.node.attribute("nullable", "true")
|
||||||
}
|
}
|
||||||
case 114:
|
case 118:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:324
|
//line parser.y:335
|
||||||
|
{
|
||||||
|
yyVAL.node = yyDollar[1].node
|
||||||
|
}
|
||||||
|
case 119:
|
||||||
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
|
//line parser.y:336
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("array type")
|
yyVAL.node = Node("array type")
|
||||||
}
|
}
|
||||||
case 115:
|
case 120:
|
||||||
yyDollar = yyS[yypt-1 : yypt+1]
|
yyDollar = yyS[yypt-1 : yypt+1]
|
||||||
//line parser.y:325
|
//line parser.y:337
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("callable type")
|
yyVAL.node = Node("callable type")
|
||||||
}
|
}
|
||||||
case 116:
|
case 121:
|
||||||
yyDollar = yyS[yypt-0 : yypt+1]
|
yyDollar = yyS[yypt-0 : yypt+1]
|
||||||
//line parser.y:329
|
//line parser.y:341
|
||||||
{
|
{
|
||||||
yyVAL.node = Node("void")
|
yyVAL.node = Node("void")
|
||||||
}
|
}
|
||||||
case 117:
|
case 122:
|
||||||
yyDollar = yyS[yypt-2 : yypt+1]
|
yyDollar = yyS[yypt-2 : yypt+1]
|
||||||
//line parser.y:330
|
//line parser.y:342
|
||||||
{
|
{
|
||||||
yyVAL.node = yyDollar[2].node
|
yyVAL.node = yyDollar[2].node
|
||||||
}
|
}
|
||||||
|
21
parser.y
21
parser.y
@ -176,6 +176,8 @@ func (n node) attribute(key string, value string) node {
|
|||||||
%type <node> identifier
|
%type <node> identifier
|
||||||
%type <node> top_statement
|
%type <node> top_statement
|
||||||
%type <node> namespace_name
|
%type <node> namespace_name
|
||||||
|
%type <node> namespace_name_parts
|
||||||
|
%type <node> name
|
||||||
%type <node> top_statement_list
|
%type <node> top_statement_list
|
||||||
%type <node> statement
|
%type <node> statement
|
||||||
%type <node> inner_statement
|
%type <node> inner_statement
|
||||||
@ -219,9 +221,19 @@ identifier:
|
|||||||
| semi_reserved { $$ = Node("reserved") }
|
| semi_reserved { $$ = Node("reserved") }
|
||||||
;
|
;
|
||||||
|
|
||||||
|
namespace_name_parts:
|
||||||
|
T_STRING { $$ = Node("NamespaceParts").append(Node($1)) }
|
||||||
|
| namespace_name_parts T_NS_SEPARATOR T_STRING { $$ = $1.append(Node($3)) }
|
||||||
|
;
|
||||||
|
|
||||||
namespace_name:
|
namespace_name:
|
||||||
T_STRING { $$ = Node("Namespace").append(Node($1)) }
|
namespace_name_parts { $$ = Node("Namespace").append($1); }
|
||||||
| namespace_name T_NS_SEPARATOR T_STRING { $$ = $1.append(Node($3)) }
|
;
|
||||||
|
|
||||||
|
name:
|
||||||
|
namespace_name { $$ = Node("Name").append($1); }
|
||||||
|
| T_NS_SEPARATOR namespace_name { $$ = Node("Name").append($2).attribute("FullyQualified", "true"); }
|
||||||
|
| T_NAMESPACE T_NS_SEPARATOR namespace_name { $$ = Node("Name").append($3).attribute("Relative", "true"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
top_statement_list:
|
top_statement_list:
|
||||||
@ -320,7 +332,8 @@ type_expr:
|
|||||||
;
|
;
|
||||||
|
|
||||||
type:
|
type:
|
||||||
T_ARRAY { $$ = Node("array type"); }
|
name { $$ = $1; }
|
||||||
|
| T_ARRAY { $$ = Node("array type"); }
|
||||||
| T_CALLABLE { $$ = Node("callable type"); }
|
| T_CALLABLE { $$ = Node("callable type"); }
|
||||||
;
|
;
|
||||||
|
|
||||||
@ -336,7 +349,7 @@ return_type:
|
|||||||
const src = `<?
|
const src = `<?
|
||||||
namespace foo\bar\test;
|
namespace foo\bar\test;
|
||||||
|
|
||||||
function test(array $a, array $b) {
|
function test(string $a, \bar\baz $b) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user