Page MenuHomePhabricator

D13994.id33818.diff
No OneTemporary

D13994.id33818.diff

diff --git a/support/xhpast/generate_nodes.php b/support/xhpast/generate_nodes.php
--- a/support/xhpast/generate_nodes.php
+++ b/support/xhpast/generate_nodes.php
@@ -1,146 +1,161 @@
-#!/usr/local/bin/php
+#!/usr/bin/env php
<?php
-$nodes = <<<EONODES
-n_PROGRAM
-n_SYMBOL_NAME
-n_HALT_COMPILER
-n_NAMESPACE
-n_STATEMENT
-n_EMPTY
-n_STATEMENT_LIST
-n_OPEN_TAG
-n_CLOSE_TAG
-n_USE_LIST
-n_USE
-n_CONSTANT_DECLARATION_LIST
-n_CONSTANT_DECLARATION
-n_STRING
-n_LABEL
-n_CONDITION_LIST
-n_CONTROL_CONDITION
-n_IF
-n_ELSEIF
-n_ELSE
-n_WHILE
-n_DO_WHILE
-n_FOR
-n_FOR_EXPRESSION
-n_SWITCH
-n_BREAK
-n_CONTINUE
-n_RETURN
-n_GLOBAL_DECLARATION_LIST
-n_GLOBAL_DECLARATION
-n_STATIC_DECLARATION_LIST
-n_STATIC_DECLARATION
-n_ECHO_LIST
-n_ECHO
-n_INLINE_HTML
-n_UNSET_LIST
-n_UNSET
-n_FOREACH
-n_FOREACH_EXPRESSION
-n_THROW
-n_GOTO
-n_TRY
-n_CATCH_LIST
-n_CATCH
-n_DECLARE
-n_DECLARE_DECLARATION_LIST
-n_DECLARE_DECLARATION
-n_VARIABLE
-n_REFERENCE
-n_VARIABLE_REFERENCE
-n_FUNCTION_DECLARATION
-n_CLASS_DECLARATION
-n_CLASS_ATTRIBUTES
-n_EXTENDS
-n_EXTENDS_LIST
-n_IMPLEMENTS_LIST
-n_INTERFACE_DECLARATION
-n_CASE
-n_DEFAULT
-n_DECLARATION_PARAMETER_LIST
-n_DECLARATION_PARAMETER
-n_TYPE_NAME
-n_VARIABLE_VARIABLE
-n_CLASS_MEMBER_DECLARATION_LIST
-n_CLASS_MEMBER_DECLARATION
-n_CLASS_CONSTANT_DECLARATION_LIST
-n_CLASS_CONSTANT_DECLARATION
-n_METHOD_DECLARATION
-n_METHOD_MODIFIER_LIST
-n_FUNCTION_MODIFIER_LIST
-n_CLASS_MEMBER_MODIFIER_LIST
-n_EXPRESSION_LIST
-n_LIST
-n_ASSIGNMENT
-n_NEW
-n_UNARY_PREFIX_EXPRESSION
-n_UNARY_POSTFIX_EXPRESSION
-n_BINARY_EXPRESSION
-n_TERNARY_EXPRESSION
-n_CAST_EXPRESSION
-n_CAST
-n_OPERATOR
-n_ARRAY_LITERAL
-n_EXIT_EXPRESSION
-n_BACKTICKS_EXPRESSION
-n_LEXICAL_VARIABLE_LIST
-n_NUMERIC_SCALAR
-n_STRING_SCALAR
-n_MAGIC_SCALAR
-n_CLASS_STATIC_ACCESS
-n_CLASS_NAME
-n_MAGIC_CLASS_KEYWORD
-n_OBJECT_PROPERTY_ACCESS
-n_ARRAY_VALUE_LIST
-n_ARRAY_VALUE
-n_CALL_PARAMETER_LIST
-n_VARIABLE_EXPRESSION
-n_INCLUDE_FILE
-n_HEREDOC
-n_FUNCTION_CALL
-n_INDEX_ACCESS
-n_ASSIGNMENT_LIST
-n_METHOD_CALL
-n_CONCATENATION_LIST
-n_PARENTHETICAL_EXPRESSION
-n_TRAIT_USE
-n_TRAIT_USE_LIST
-n_TRAIT_ADAPTATION_LIST
-n_TRAIT_INSTEADOF
-n_TRAIT_REFERENCE_LIST
-n_TRAIT_METHOD_REFERENCE
-n_TRAIT_AS
-n_YIELD
-n_FINALLY
-EONODES;
+require_once dirname(__FILE__).'/../../scripts/__init_script__.php';
-$seq = 9000;
-$map = array();
-foreach (explode("\n", trim($nodes)) as $node) {
- $map[$node] = $seq++;
-}
+$offset = 9000;
+$nodes = array(
+ 'n_PROGRAM',
+ 'n_SYMBOL_NAME',
+ 'n_HALT_COMPILER',
+ 'n_NAMESPACE',
+ 'n_STATEMENT',
+ 'n_EMPTY',
+ 'n_STATEMENT_LIST',
+ 'n_OPEN_TAG',
+ 'n_CLOSE_TAG',
+ 'n_USE_LIST',
+ 'n_USE',
+ 'n_CONSTANT_DECLARATION_LIST',
+ 'n_CONSTANT_DECLARATION',
+ 'n_STRING',
+ 'n_LABEL',
+ 'n_CONDITION_LIST',
+ 'n_CONTROL_CONDITION',
+ 'n_IF',
+ 'n_ELSEIF',
+ 'n_ELSE',
+ 'n_WHILE',
+ 'n_DO_WHILE',
+ 'n_FOR',
+ 'n_FOR_EXPRESSION',
+ 'n_SWITCH',
+ 'n_BREAK',
+ 'n_CONTINUE',
+ 'n_RETURN',
+ 'n_GLOBAL_DECLARATION_LIST',
+ 'n_GLOBAL_DECLARATION',
+ 'n_STATIC_DECLARATION_LIST',
+ 'n_STATIC_DECLARATION',
+ 'n_ECHO_LIST',
+ 'n_ECHO',
+ 'n_INLINE_HTML',
+ 'n_UNSET_LIST',
+ 'n_UNSET',
+ 'n_FOREACH',
+ 'n_FOREACH_EXPRESSION',
+ 'n_THROW',
+ 'n_GOTO',
+ 'n_TRY',
+ 'n_CATCH_LIST',
+ 'n_CATCH',
+ 'n_DECLARE',
+ 'n_DECLARE_DECLARATION_LIST',
+ 'n_DECLARE_DECLARATION',
+ 'n_VARIABLE',
+ 'n_REFERENCE',
+ 'n_VARIABLE_REFERENCE',
+ 'n_FUNCTION_DECLARATION',
+ 'n_CLASS_DECLARATION',
+ 'n_CLASS_ATTRIBUTES',
+ 'n_EXTENDS',
+ 'n_EXTENDS_LIST',
+ 'n_IMPLEMENTS_LIST',
+ 'n_INTERFACE_DECLARATION',
+ 'n_CASE',
+ 'n_DEFAULT',
+ 'n_DECLARATION_PARAMETER_LIST',
+ 'n_DECLARATION_PARAMETER',
+ 'n_TYPE_NAME',
+ 'n_VARIABLE_VARIABLE',
+ 'n_CLASS_MEMBER_DECLARATION_LIST',
+ 'n_CLASS_MEMBER_DECLARATION',
+ 'n_CLASS_CONSTANT_DECLARATION_LIST',
+ 'n_CLASS_CONSTANT_DECLARATION',
+ 'n_METHOD_DECLARATION',
+ 'n_METHOD_MODIFIER_LIST',
+ 'n_FUNCTION_MODIFIER_LIST',
+ 'n_CLASS_MEMBER_MODIFIER_LIST',
+ 'n_EXPRESSION_LIST',
+ 'n_LIST',
+ 'n_ASSIGNMENT',
+ 'n_NEW',
+ 'n_UNARY_PREFIX_EXPRESSION',
+ 'n_UNARY_POSTFIX_EXPRESSION',
+ 'n_BINARY_EXPRESSION',
+ 'n_TERNARY_EXPRESSION',
+ 'n_CAST_EXPRESSION',
+ 'n_CAST',
+ 'n_OPERATOR',
+ 'n_ARRAY_LITERAL',
+ 'n_EXIT_EXPRESSION',
+ 'n_BACKTICKS_EXPRESSION',
+ 'n_LEXICAL_VARIABLE_LIST',
+ 'n_NUMERIC_SCALAR',
+ 'n_STRING_SCALAR',
+ 'n_MAGIC_SCALAR',
+ 'n_CLASS_STATIC_ACCESS',
+ 'n_CLASS_NAME',
+ 'n_MAGIC_CLASS_KEYWORD',
+ 'n_OBJECT_PROPERTY_ACCESS',
+ 'n_ARRAY_VALUE_LIST',
+ 'n_ARRAY_VALUE',
+ 'n_CALL_PARAMETER_LIST',
+ 'n_VARIABLE_EXPRESSION',
+ 'n_INCLUDE_FILE',
+ 'n_HEREDOC',
+ 'n_FUNCTION_CALL',
+ 'n_INDEX_ACCESS',
+ 'n_ASSIGNMENT_LIST',
+ 'n_METHOD_CALL',
+ 'n_CONCATENATION_LIST',
+ 'n_PARENTHETICAL_EXPRESSION',
+ 'n_TRAIT_USE',
+ 'n_TRAIT_USE_LIST',
+ 'n_TRAIT_ADAPTATION_LIST',
+ 'n_TRAIT_INSTEADOF',
+ 'n_TRAIT_REFERENCE_LIST',
+ 'n_TRAIT_METHOD_REFERENCE',
+ 'n_TRAIT_AS',
+ 'n_YIELD',
+ 'n_FINALLY',
+);
+
+$nodes = array_combine(
+ array_values($nodes),
+ range($offset, $offset + count($nodes) - 1));
$hpp = '';
-foreach ($map as $node => $value) {
+foreach ($nodes as $node => $value) {
$hpp .= "#define {$node} {$value}\n";
}
-file_put_contents('node_names.hpp', $hpp);
-echo "Wrote C++ definition.\n";
+Filesystem::writeFile(
+ Filesystem::resolvePath('node_names.hpp', dirname(__FILE__)),
+ $hpp);
+echo pht('Wrote C++ definition.')."\n";
$at = '@';
-$php =
- "<?php\n\n".
- "/* {$at}generated {$at}undivinable */\n\n".
- "function xhp_parser_node_constants() {\n".
- " return array(\n";
-foreach ($map as $node => $value) {
+$php = <<<EOPHP
+<?php
+
+/**
+ * {$at}generated
+ * {$at}undivinable
+ */
+function xhp_parser_node_constants() {
+ return array(
+
+EOPHP;
+
+foreach ($nodes as $node => $value) {
$php .= " {$value} => '{$node}',\n";
}
-$php .= " );\n";
-$php .= "}\n";
-file_put_contents('parser_nodes.php', $php);
-echo "Wrote PHP definition.\n";
+$php .= <<<EOPHP
+ );
+}
+
+EOPHP;
+Filesystem::writeFile(
+ Filesystem::resolvePath('parser_nodes.php', dirname(__FILE__)),
+ $php);
+echo pht('Wrote PHP definition.')."\n";
diff --git a/support/xhpast/parser_nodes.php b/support/xhpast/parser_nodes.php
--- a/support/xhpast/parser_nodes.php
+++ b/support/xhpast/parser_nodes.php
@@ -1,7 +1,9 @@
<?php
-/* @generated @undivinable */
-
+/**
+ * @generated
+ * @undivinable
+ */
function xhp_parser_node_constants() {
return array(
9000 => 'n_PROGRAM',

File Metadata

Mime Type
text/plain
Expires
Sun, Mar 16, 1:25 AM (2 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7688669
Default Alt Text
D13994.id33818.diff (6 KB)

Event Timeline