@mintplayer/polyglot-target-php 0.9.2 → 0.9.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/polyglot-plugin.json +288 -2
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mintplayer/polyglot-target-php",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.4",
|
|
4
4
|
"description": "MintPlayer Polyglot PHP target — a pure-JSON language plugin (spec + emission rules + capabilities + std bindings) for the polyglot transpiler.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"polyglot",
|
package/polyglot-plugin.json
CHANGED
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
"name": "php",
|
|
18
18
|
"scalarType": {},
|
|
19
19
|
"intSuffix": {},
|
|
20
|
-
"binaryOp": {
|
|
20
|
+
"binaryOp": {
|
|
21
|
+
"==": "===",
|
|
22
|
+
"!=": "!=="
|
|
23
|
+
},
|
|
21
24
|
"delimited": {
|
|
22
25
|
"tuple": {
|
|
23
26
|
"open": "[",
|
|
@@ -232,7 +235,7 @@
|
|
|
232
235
|
"Math.abs": "abs($0)",
|
|
233
236
|
"Math.sign": "(fn($a) => $a > 0 ? 1 : ($a < 0 ? -1 : $a - $a))($0)",
|
|
234
237
|
"Math.clamp": "(fn($x, $lo, $hi) => $x < $lo ? $lo : ($x > $hi ? $hi : $x))($0, $1, $2)",
|
|
235
|
-
"Math.round": "round($0)"
|
|
238
|
+
"Math.round": "round($0, 0, PHP_ROUND_HALF_EVEN)"
|
|
236
239
|
}
|
|
237
240
|
},
|
|
238
241
|
"rules": {
|
|
@@ -834,6 +837,75 @@
|
|
|
834
837
|
"Binary": {
|
|
835
838
|
"case": {
|
|
836
839
|
"when": [
|
|
840
|
+
[
|
|
841
|
+
{
|
|
842
|
+
"and": [
|
|
843
|
+
{
|
|
844
|
+
"or": [
|
|
845
|
+
{
|
|
846
|
+
"eq": [
|
|
847
|
+
"node.op",
|
|
848
|
+
"=="
|
|
849
|
+
]
|
|
850
|
+
},
|
|
851
|
+
{
|
|
852
|
+
"eq": [
|
|
853
|
+
"node.op",
|
|
854
|
+
"!="
|
|
855
|
+
]
|
|
856
|
+
}
|
|
857
|
+
]
|
|
858
|
+
},
|
|
859
|
+
{
|
|
860
|
+
"eq": [
|
|
861
|
+
"node.lhsIsRecord",
|
|
862
|
+
"true"
|
|
863
|
+
]
|
|
864
|
+
}
|
|
865
|
+
]
|
|
866
|
+
},
|
|
867
|
+
{
|
|
868
|
+
"case": {
|
|
869
|
+
"when": [
|
|
870
|
+
[
|
|
871
|
+
{
|
|
872
|
+
"eq": [
|
|
873
|
+
"node.op",
|
|
874
|
+
"=="
|
|
875
|
+
]
|
|
876
|
+
},
|
|
877
|
+
{
|
|
878
|
+
"tmpl": [
|
|
879
|
+
{
|
|
880
|
+
"emitChild": "node.lhs",
|
|
881
|
+
"side": "recv"
|
|
882
|
+
},
|
|
883
|
+
"->equals(",
|
|
884
|
+
{
|
|
885
|
+
"emit": "node.rhs"
|
|
886
|
+
},
|
|
887
|
+
")"
|
|
888
|
+
]
|
|
889
|
+
}
|
|
890
|
+
]
|
|
891
|
+
],
|
|
892
|
+
"else": {
|
|
893
|
+
"tmpl": [
|
|
894
|
+
"!",
|
|
895
|
+
{
|
|
896
|
+
"emitChild": "node.lhs",
|
|
897
|
+
"side": "recv"
|
|
898
|
+
},
|
|
899
|
+
"->equals(",
|
|
900
|
+
{
|
|
901
|
+
"emit": "node.rhs"
|
|
902
|
+
},
|
|
903
|
+
")"
|
|
904
|
+
]
|
|
905
|
+
}
|
|
906
|
+
}
|
|
907
|
+
}
|
|
908
|
+
],
|
|
837
909
|
[
|
|
838
910
|
{
|
|
839
911
|
"and": [
|
|
@@ -865,6 +937,37 @@
|
|
|
865
937
|
]
|
|
866
938
|
}
|
|
867
939
|
],
|
|
940
|
+
[
|
|
941
|
+
{
|
|
942
|
+
"and": [
|
|
943
|
+
{
|
|
944
|
+
"eq": [
|
|
945
|
+
"node.typeIsFloat",
|
|
946
|
+
"true"
|
|
947
|
+
]
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
"eq": [
|
|
951
|
+
"node.op",
|
|
952
|
+
"%"
|
|
953
|
+
]
|
|
954
|
+
}
|
|
955
|
+
]
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
"tmpl": [
|
|
959
|
+
"fmod(",
|
|
960
|
+
{
|
|
961
|
+
"emit": "node.lhs"
|
|
962
|
+
},
|
|
963
|
+
", ",
|
|
964
|
+
{
|
|
965
|
+
"emit": "node.rhs"
|
|
966
|
+
},
|
|
967
|
+
")"
|
|
968
|
+
]
|
|
969
|
+
}
|
|
970
|
+
],
|
|
868
971
|
[
|
|
869
972
|
{
|
|
870
973
|
"and": [
|
|
@@ -905,6 +1008,18 @@
|
|
|
905
1008
|
"node.op",
|
|
906
1009
|
"%"
|
|
907
1010
|
]
|
|
1011
|
+
},
|
|
1012
|
+
{
|
|
1013
|
+
"eq": [
|
|
1014
|
+
"node.op",
|
|
1015
|
+
"<<"
|
|
1016
|
+
]
|
|
1017
|
+
},
|
|
1018
|
+
{
|
|
1019
|
+
"eq": [
|
|
1020
|
+
"node.op",
|
|
1021
|
+
">>"
|
|
1022
|
+
]
|
|
908
1023
|
}
|
|
909
1024
|
]
|
|
910
1025
|
}
|
|
@@ -919,6 +1034,82 @@
|
|
|
919
1034
|
{
|
|
920
1035
|
"case": {
|
|
921
1036
|
"when": [
|
|
1037
|
+
[
|
|
1038
|
+
{
|
|
1039
|
+
"eq": [
|
|
1040
|
+
"node.op",
|
|
1041
|
+
"<<"
|
|
1042
|
+
]
|
|
1043
|
+
},
|
|
1044
|
+
{
|
|
1045
|
+
"tmpl": [
|
|
1046
|
+
"(",
|
|
1047
|
+
{
|
|
1048
|
+
"emit": "node.lhs"
|
|
1049
|
+
},
|
|
1050
|
+
" << (",
|
|
1051
|
+
{
|
|
1052
|
+
"emit": "node.rhs"
|
|
1053
|
+
},
|
|
1054
|
+
" & ",
|
|
1055
|
+
{
|
|
1056
|
+
"case": {
|
|
1057
|
+
"when": [
|
|
1058
|
+
[
|
|
1059
|
+
{
|
|
1060
|
+
"eq": [
|
|
1061
|
+
"node.typeIsInt64",
|
|
1062
|
+
"true"
|
|
1063
|
+
]
|
|
1064
|
+
},
|
|
1065
|
+
"63"
|
|
1066
|
+
]
|
|
1067
|
+
],
|
|
1068
|
+
"else": "31"
|
|
1069
|
+
}
|
|
1070
|
+
},
|
|
1071
|
+
"))"
|
|
1072
|
+
]
|
|
1073
|
+
}
|
|
1074
|
+
],
|
|
1075
|
+
[
|
|
1076
|
+
{
|
|
1077
|
+
"eq": [
|
|
1078
|
+
"node.op",
|
|
1079
|
+
">>"
|
|
1080
|
+
]
|
|
1081
|
+
},
|
|
1082
|
+
{
|
|
1083
|
+
"tmpl": [
|
|
1084
|
+
"(",
|
|
1085
|
+
{
|
|
1086
|
+
"emit": "node.lhs"
|
|
1087
|
+
},
|
|
1088
|
+
" >> (",
|
|
1089
|
+
{
|
|
1090
|
+
"emit": "node.rhs"
|
|
1091
|
+
},
|
|
1092
|
+
" & ",
|
|
1093
|
+
{
|
|
1094
|
+
"case": {
|
|
1095
|
+
"when": [
|
|
1096
|
+
[
|
|
1097
|
+
{
|
|
1098
|
+
"eq": [
|
|
1099
|
+
"node.typeIsInt64",
|
|
1100
|
+
"true"
|
|
1101
|
+
]
|
|
1102
|
+
},
|
|
1103
|
+
"63"
|
|
1104
|
+
]
|
|
1105
|
+
],
|
|
1106
|
+
"else": "31"
|
|
1107
|
+
}
|
|
1108
|
+
},
|
|
1109
|
+
"))"
|
|
1110
|
+
]
|
|
1111
|
+
}
|
|
1112
|
+
],
|
|
922
1113
|
[
|
|
923
1114
|
{
|
|
924
1115
|
"eq": [
|
|
@@ -2202,6 +2393,101 @@
|
|
|
2202
2393
|
]
|
|
2203
2394
|
}
|
|
2204
2395
|
},
|
|
2396
|
+
{
|
|
2397
|
+
"block": {
|
|
2398
|
+
"head": "public function equals($other)",
|
|
2399
|
+
"body": [
|
|
2400
|
+
{
|
|
2401
|
+
"case": {
|
|
2402
|
+
"when": [
|
|
2403
|
+
[
|
|
2404
|
+
{
|
|
2405
|
+
"eq": [
|
|
2406
|
+
"decl.fields.count",
|
|
2407
|
+
"0"
|
|
2408
|
+
]
|
|
2409
|
+
},
|
|
2410
|
+
{
|
|
2411
|
+
"line": "return true;"
|
|
2412
|
+
}
|
|
2413
|
+
]
|
|
2414
|
+
],
|
|
2415
|
+
"else": {
|
|
2416
|
+
"line": {
|
|
2417
|
+
"tmpl": [
|
|
2418
|
+
"return ",
|
|
2419
|
+
{
|
|
2420
|
+
"map": "decl.fields",
|
|
2421
|
+
"sep": " && ",
|
|
2422
|
+
"item": {
|
|
2423
|
+
"case": {
|
|
2424
|
+
"when": [
|
|
2425
|
+
[
|
|
2426
|
+
{
|
|
2427
|
+
"eq": [
|
|
2428
|
+
"item.typeIsRecord",
|
|
2429
|
+
"true"
|
|
2430
|
+
]
|
|
2431
|
+
},
|
|
2432
|
+
{
|
|
2433
|
+
"tmpl": [
|
|
2434
|
+
"$this->",
|
|
2435
|
+
{
|
|
2436
|
+
"fn": "ident",
|
|
2437
|
+
"args": [
|
|
2438
|
+
{
|
|
2439
|
+
"get": "item.name"
|
|
2440
|
+
}
|
|
2441
|
+
]
|
|
2442
|
+
},
|
|
2443
|
+
"->equals($other->",
|
|
2444
|
+
{
|
|
2445
|
+
"fn": "ident",
|
|
2446
|
+
"args": [
|
|
2447
|
+
{
|
|
2448
|
+
"get": "item.name"
|
|
2449
|
+
}
|
|
2450
|
+
]
|
|
2451
|
+
},
|
|
2452
|
+
")"
|
|
2453
|
+
]
|
|
2454
|
+
}
|
|
2455
|
+
]
|
|
2456
|
+
],
|
|
2457
|
+
"else": {
|
|
2458
|
+
"tmpl": [
|
|
2459
|
+
"$this->",
|
|
2460
|
+
{
|
|
2461
|
+
"fn": "ident",
|
|
2462
|
+
"args": [
|
|
2463
|
+
{
|
|
2464
|
+
"get": "item.name"
|
|
2465
|
+
}
|
|
2466
|
+
]
|
|
2467
|
+
},
|
|
2468
|
+
" === $other->",
|
|
2469
|
+
{
|
|
2470
|
+
"fn": "ident",
|
|
2471
|
+
"args": [
|
|
2472
|
+
{
|
|
2473
|
+
"get": "item.name"
|
|
2474
|
+
}
|
|
2475
|
+
]
|
|
2476
|
+
}
|
|
2477
|
+
]
|
|
2478
|
+
}
|
|
2479
|
+
}
|
|
2480
|
+
}
|
|
2481
|
+
},
|
|
2482
|
+
";"
|
|
2483
|
+
]
|
|
2484
|
+
}
|
|
2485
|
+
}
|
|
2486
|
+
}
|
|
2487
|
+
}
|
|
2488
|
+
]
|
|
2489
|
+
}
|
|
2490
|
+
},
|
|
2205
2491
|
{
|
|
2206
2492
|
"mapMembers": "decl.methods",
|
|
2207
2493
|
"rule": "MethodDecl"
|