mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Enhance the tokenizer data generator script
Changes: - executable from any location (for example, project root) - some minor common shell scripts CS fixes - error reporting done based on the presence of the parser file
This commit is contained in:
parent
a07d422ade
commit
b4dec0e11d
1 changed files with 23 additions and 20 deletions
|
@ -1,17 +1,21 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# Generate the tokenizer extension data file from the parser header file.
|
||||
|
||||
INFILE="../../Zend/zend_language_parser.h"
|
||||
OUTFILE="tokenizer_data.c"
|
||||
AWK=awk
|
||||
# Go to project root directory.
|
||||
cd $(CDPATH= cd -- "$(dirname -- "$0")/../../" && pwd -P)
|
||||
|
||||
####################################################################
|
||||
infile="Zend/zend_language_parser.h"
|
||||
outfile="ext/tokenizer/tokenizer_data.c"
|
||||
|
||||
if test ! -f "./tokenizer.c"; then
|
||||
echo "Please run this script from within php-src/ext/tokenizer"
|
||||
exit 0
|
||||
if test ! -f "$infile"; then
|
||||
echo "$infile is missing." >&2
|
||||
echo "" >&2
|
||||
echo "Please, generate the PHP parser files by scripts/dev/genfiles" >&2
|
||||
echo "or by running the ./configure build step." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
||||
echo '/*
|
||||
+----------------------------------------------------------------------+
|
||||
| PHP Version 7 |
|
||||
|
@ -39,25 +43,24 @@ echo '/*
|
|||
#include "zend.h"
|
||||
#include <zend_language_parser.h>
|
||||
|
||||
' > $OUTFILE
|
||||
' > $outfile
|
||||
|
||||
|
||||
echo 'void tokenizer_register_constants(INIT_FUNC_ARGS) {' >> $OUTFILE
|
||||
$AWK '
|
||||
echo 'void tokenizer_register_constants(INIT_FUNC_ARGS) {' >> $outfile
|
||||
awk '
|
||||
/^ T_(NOELSE|ERROR)/ { next }
|
||||
/^ T_/ { print " REGISTER_LONG_CONSTANT(\"" $1 "\", " $1 ", CONST_CS | CONST_PERSISTENT);" }
|
||||
' < $INFILE >> $OUTFILE
|
||||
echo ' REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);' >> $OUTFILE
|
||||
echo '}' >> $OUTFILE
|
||||
' < $infile >> $outfile
|
||||
echo ' REGISTER_LONG_CONSTANT("T_DOUBLE_COLON", T_PAAMAYIM_NEKUDOTAYIM, CONST_CS | CONST_PERSISTENT);' >> $outfile
|
||||
echo '}' >> $outfile
|
||||
|
||||
|
||||
echo '
|
||||
char *get_token_type_name(int token_type)
|
||||
{
|
||||
switch (token_type) {
|
||||
' >> $OUTFILE
|
||||
' >> $outfile
|
||||
|
||||
$AWK '
|
||||
awk '
|
||||
/^ T_PAAMAYIM_NEKUDOTAYIM/ {
|
||||
print " case T_PAAMAYIM_NEKUDOTAYIM: return \"T_DOUBLE_COLON\";"
|
||||
next
|
||||
|
@ -66,12 +69,12 @@ $AWK '
|
|||
/^ T_/ {
|
||||
print " case " $1 ": return \"" $1 "\";"
|
||||
}
|
||||
' < $INFILE >> $OUTFILE
|
||||
' < $infile >> $outfile
|
||||
|
||||
echo '
|
||||
}
|
||||
return "UNKNOWN";
|
||||
}
|
||||
' >> $OUTFILE
|
||||
' >> $outfile
|
||||
|
||||
echo "Wrote $OUTFILE"
|
||||
echo "Wrote $outfile"
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue