@jorgsowa/php-parser 3.2.5-1
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/LICENSE +27 -0
- package/README.md +108 -0
- package/dist/@jorgsowa/php-parser.js +11239 -0
- package/dist/@jorgsowa/php-parser.min.js +2 -0
- package/dist/@jorgsowa/php-parser.min.js.LICENSE.txt +10 -0
- package/package.json +86 -0
- package/src/ast/array.js +44 -0
- package/src/ast/arrowfunc.js +43 -0
- package/src/ast/assign.js +28 -0
- package/src/ast/assignref.js +27 -0
- package/src/ast/attrgroup.js +21 -0
- package/src/ast/attribute.js +26 -0
- package/src/ast/bin.js +27 -0
- package/src/ast/block.js +24 -0
- package/src/ast/boolean.js +23 -0
- package/src/ast/break.js +21 -0
- package/src/ast/byref.js +21 -0
- package/src/ast/call.js +26 -0
- package/src/ast/case.js +26 -0
- package/src/ast/cast.js +28 -0
- package/src/ast/catch.js +29 -0
- package/src/ast/class.js +36 -0
- package/src/ast/classconstant.js +71 -0
- package/src/ast/clone.js +21 -0
- package/src/ast/closure.js +47 -0
- package/src/ast/comment.js +23 -0
- package/src/ast/commentblock.js +22 -0
- package/src/ast/commentline.js +22 -0
- package/src/ast/constant.js +26 -0
- package/src/ast/constantstatement.js +24 -0
- package/src/ast/continue.js +24 -0
- package/src/ast/declaration.js +60 -0
- package/src/ast/declare.js +71 -0
- package/src/ast/declaredirective.js +26 -0
- package/src/ast/do.js +26 -0
- package/src/ast/echo.js +26 -0
- package/src/ast/empty.js +23 -0
- package/src/ast/encapsed.js +75 -0
- package/src/ast/encapsedpart.js +28 -0
- package/src/ast/entry.js +30 -0
- package/src/ast/enum.js +30 -0
- package/src/ast/enumcase.js +26 -0
- package/src/ast/error.js +30 -0
- package/src/ast/eval.js +24 -0
- package/src/ast/exit.js +26 -0
- package/src/ast/expression.js +20 -0
- package/src/ast/expressionstatement.js +24 -0
- package/src/ast/for.js +33 -0
- package/src/ast/foreach.js +33 -0
- package/src/ast/function.js +34 -0
- package/src/ast/global.js +24 -0
- package/src/ast/goto.js +22 -0
- package/src/ast/halt.js +22 -0
- package/src/ast/identifier.js +26 -0
- package/src/ast/if.js +30 -0
- package/src/ast/include.js +28 -0
- package/src/ast/inline.js +23 -0
- package/src/ast/interface.js +28 -0
- package/src/ast/intersectiontype.js +24 -0
- package/src/ast/isset.js +23 -0
- package/src/ast/label.js +21 -0
- package/src/ast/list.js +26 -0
- package/src/ast/literal.js +28 -0
- package/src/ast/location.js +22 -0
- package/src/ast/lookup.js +26 -0
- package/src/ast/magic.js +22 -0
- package/src/ast/match.js +26 -0
- package/src/ast/matcharm.js +26 -0
- package/src/ast/method.js +24 -0
- package/src/ast/name.js +55 -0
- package/src/ast/namedargument.js +27 -0
- package/src/ast/namespace.js +26 -0
- package/src/ast/new.js +26 -0
- package/src/ast/node.js +111 -0
- package/src/ast/noop.js +20 -0
- package/src/ast/nowdoc.js +26 -0
- package/src/ast/nullkeyword.js +20 -0
- package/src/ast/nullsafepropertylookup.js +22 -0
- package/src/ast/number.js +23 -0
- package/src/ast/offsetlookup.js +22 -0
- package/src/ast/operation.js +19 -0
- package/src/ast/parameter.js +61 -0
- package/src/ast/parentreference.js +24 -0
- package/src/ast/position.js +22 -0
- package/src/ast/post.js +26 -0
- package/src/ast/pre.js +26 -0
- package/src/ast/print.js +23 -0
- package/src/ast/program.js +32 -0
- package/src/ast/property.js +46 -0
- package/src/ast/propertyhook.js +33 -0
- package/src/ast/propertylookup.js +22 -0
- package/src/ast/propertystatement.js +59 -0
- package/src/ast/reference.js +21 -0
- package/src/ast/retif.js +28 -0
- package/src/ast/return.js +21 -0
- package/src/ast/selfreference.js +24 -0
- package/src/ast/silent.js +24 -0
- package/src/ast/statement.js +19 -0
- package/src/ast/static.js +24 -0
- package/src/ast/staticlookup.js +22 -0
- package/src/ast/staticreference.js +24 -0
- package/src/ast/staticvariable.js +26 -0
- package/src/ast/string.js +28 -0
- package/src/ast/switch.js +28 -0
- package/src/ast/throw.js +21 -0
- package/src/ast/trait.js +24 -0
- package/src/ast/traitalias.js +44 -0
- package/src/ast/traitprecedence.js +28 -0
- package/src/ast/traituse.js +26 -0
- package/src/ast/try.js +28 -0
- package/src/ast/typereference.js +40 -0
- package/src/ast/unary.js +26 -0
- package/src/ast/uniontype.js +24 -0
- package/src/ast/unset.js +23 -0
- package/src/ast/usegroup.js +30 -0
- package/src/ast/useitem.js +45 -0
- package/src/ast/variable.js +36 -0
- package/src/ast/variadic.js +25 -0
- package/src/ast/variadicplaceholder.js +24 -0
- package/src/ast/while.js +28 -0
- package/src/ast/yield.js +27 -0
- package/src/ast/yieldfrom.js +25 -0
- package/src/ast.js +593 -0
- package/src/index.js +239 -0
- package/src/lexer/attribute.js +85 -0
- package/src/lexer/comments.js +63 -0
- package/src/lexer/initial.js +64 -0
- package/src/lexer/numbers.js +171 -0
- package/src/lexer/property.js +96 -0
- package/src/lexer/scripting.js +114 -0
- package/src/lexer/strings.js +524 -0
- package/src/lexer/tokens.js +356 -0
- package/src/lexer/utils.js +112 -0
- package/src/lexer.js +561 -0
- package/src/parser/array.js +113 -0
- package/src/parser/class.js +718 -0
- package/src/parser/comment.js +52 -0
- package/src/parser/enum.js +56 -0
- package/src/parser/expr.js +848 -0
- package/src/parser/function.js +507 -0
- package/src/parser/if.js +94 -0
- package/src/parser/loops.js +168 -0
- package/src/parser/main.js +21 -0
- package/src/parser/namespace.js +231 -0
- package/src/parser/scalar.js +492 -0
- package/src/parser/statement.js +444 -0
- package/src/parser/switch.js +99 -0
- package/src/parser/try.js +43 -0
- package/src/parser/utils.js +203 -0
- package/src/parser/variable.js +363 -0
- package/src/parser.js +748 -0
- package/src/tokens.js +177 -0
- package/types.d.ts +1457 -0
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2018 Glayzzle (BSD3 License)
|
|
3
|
+
* @authors https://github.com/glayzzle/php-parser/graphs/contributors
|
|
4
|
+
* @url http://glayzzle.com
|
|
5
|
+
*/
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
/*
|
|
10
|
+
* Comments with // or # or / * ... * /
|
|
11
|
+
*/
|
|
12
|
+
read_comment() {
|
|
13
|
+
const text = this.text();
|
|
14
|
+
let result = this.ast.prepare(
|
|
15
|
+
text.substring(0, 2) === "/*" ? "commentblock" : "commentline",
|
|
16
|
+
null,
|
|
17
|
+
this,
|
|
18
|
+
);
|
|
19
|
+
const offset = this.lexer.yylloc.first_offset;
|
|
20
|
+
// handle location on comment
|
|
21
|
+
const prev = this.prev;
|
|
22
|
+
this.prev = [
|
|
23
|
+
this.lexer.yylloc.last_line,
|
|
24
|
+
this.lexer.yylloc.last_column,
|
|
25
|
+
this.lexer.offset,
|
|
26
|
+
];
|
|
27
|
+
this.lex();
|
|
28
|
+
result = result(text);
|
|
29
|
+
result.offset = offset;
|
|
30
|
+
this.prev = prev;
|
|
31
|
+
return result;
|
|
32
|
+
},
|
|
33
|
+
/*
|
|
34
|
+
* Comments with / ** ... * /
|
|
35
|
+
*/
|
|
36
|
+
read_doc_comment() {
|
|
37
|
+
let result = this.ast.prepare("commentblock", null, this);
|
|
38
|
+
const offset = this.lexer.yylloc.first_offset;
|
|
39
|
+
const text = this.text();
|
|
40
|
+
const prev = this.prev;
|
|
41
|
+
this.prev = [
|
|
42
|
+
this.lexer.yylloc.last_line,
|
|
43
|
+
this.lexer.yylloc.last_column,
|
|
44
|
+
this.lexer.offset,
|
|
45
|
+
];
|
|
46
|
+
this.lex();
|
|
47
|
+
result = result(text);
|
|
48
|
+
result.offset = offset;
|
|
49
|
+
this.prev = prev;
|
|
50
|
+
return result;
|
|
51
|
+
},
|
|
52
|
+
};
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (C) 2018 Glayzzle (BSD3 License)
|
|
3
|
+
* @authors https://github.com/glayzzle/php-parser/graphs/contributors
|
|
4
|
+
* @url http://glayzzle.com
|
|
5
|
+
*/
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
module.exports = {
|
|
9
|
+
/*
|
|
10
|
+
* reading an enum
|
|
11
|
+
* ```ebnf
|
|
12
|
+
* enum ::= enum_scope? T_ENUM T_STRING (':' NAMESPACE_NAME)? (T_IMPLEMENTS (NAMESPACE_NAME ',')* NAMESPACE_NAME)? '{' ENUM_BODY '}'
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
read_enum_declaration_statement(attrs) {
|
|
16
|
+
const result = this.node("enum");
|
|
17
|
+
// graceful mode : ignore token & go next
|
|
18
|
+
if (!this.expect(this.tok.T_ENUM)) {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
this.next().expect(this.tok.T_STRING);
|
|
22
|
+
let propName = this.node("identifier");
|
|
23
|
+
const name = this.text();
|
|
24
|
+
this.next();
|
|
25
|
+
propName = propName(name);
|
|
26
|
+
const valueType = this.read_enum_value_type();
|
|
27
|
+
const propImplements = this.read_implements_list();
|
|
28
|
+
this.expect("{");
|
|
29
|
+
const body = this.next().read_class_body(false, true);
|
|
30
|
+
const node = result(propName, valueType, propImplements, body);
|
|
31
|
+
if (attrs) node.attrGroups = attrs;
|
|
32
|
+
return node;
|
|
33
|
+
},
|
|
34
|
+
|
|
35
|
+
read_enum_value_type() {
|
|
36
|
+
if (this.token === ":") {
|
|
37
|
+
return this.next().read_namespace_name();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return null;
|
|
41
|
+
},
|
|
42
|
+
|
|
43
|
+
read_enum_case() {
|
|
44
|
+
this.expect(this.tok.T_CASE);
|
|
45
|
+
const result = this.node("enumcase");
|
|
46
|
+
let caseName = this.node("identifier");
|
|
47
|
+
const name = this.next().text();
|
|
48
|
+
this.next();
|
|
49
|
+
caseName = caseName(name);
|
|
50
|
+
|
|
51
|
+
const value = this.token === "=" ? this.next().read_expr() : null;
|
|
52
|
+
this.expect(";");
|
|
53
|
+
|
|
54
|
+
return result(caseName, value);
|
|
55
|
+
},
|
|
56
|
+
};
|