parse InlineHtml
This commit is contained in:
parent
ed0771f7a0
commit
aa1c9b9257
26
lexer.go
26
lexer.go
@ -7664,8 +7664,28 @@ yyrule1: // [ \t\n\r]+
|
|||||||
|
|
||||||
goto yystate0
|
goto yystate0
|
||||||
yyrule2: // .
|
yyrule2: // .
|
||||||
|
{
|
||||||
|
|
||||||
goto yystate0
|
tb := []byte{}
|
||||||
|
for {
|
||||||
|
if c == -1 {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
if '?' == rune(c) {
|
||||||
|
tb = l.TokenBytes(nil)
|
||||||
|
if len(tb) < 2 || tb[len(tb)-1] != '<' {
|
||||||
|
c = l.Next()
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
tb = l.ungetN(1)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
c = l.Next()
|
||||||
|
}
|
||||||
|
lval.token = string(tb)
|
||||||
|
return T_INLINE_HTML
|
||||||
|
goto yystate0
|
||||||
|
}
|
||||||
yyrule3: // \<\?php([ \t]|{NEW_LINE})
|
yyrule3: // \<\?php([ \t]|{NEW_LINE})
|
||||||
{
|
{
|
||||||
begin(PHP) //lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
begin(PHP) //lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
||||||
@ -7690,9 +7710,7 @@ yyrule6: // [ \t\n\r]+
|
|||||||
}
|
}
|
||||||
yyrule7: // \?\>{NEW_LINE}?
|
yyrule7: // \?\>{NEW_LINE}?
|
||||||
{
|
{
|
||||||
begin(INITIAL)
|
begin(INITIAL) //lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG;
|
||||||
lval.token = string(l.TokenBytes(nil))
|
|
||||||
return T_CLOSE_TAG
|
|
||||||
goto yystate0
|
goto yystate0
|
||||||
}
|
}
|
||||||
yyrule8: // {DNUM}|{EXPONENT_DNUM}
|
yyrule8: // {DNUM}|{EXPONENT_DNUM}
|
||||||
|
25
lexer.l
25
lexer.l
@ -154,12 +154,35 @@ NEW_LINE (\r|\n|\r\n)
|
|||||||
|
|
||||||
<INITIAL>[ \t\n\r]+
|
<INITIAL>[ \t\n\r]+
|
||||||
<INITIAL>.
|
<INITIAL>.
|
||||||
|
tb := []byte{}
|
||||||
|
|
||||||
|
for {
|
||||||
|
if c == -1 {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if '?' == rune(c) {
|
||||||
|
tb = l.TokenBytes(nil);
|
||||||
|
if (len(tb) < 2 || tb[len(tb)-1] != '<') {
|
||||||
|
c = l.Next()
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
tb = l.ungetN(1)
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
c = l.Next()
|
||||||
|
}
|
||||||
|
|
||||||
|
lval.token = string(tb); return T_INLINE_HTML
|
||||||
|
|
||||||
<INITIAL>\<\?php([ \t]|{NEW_LINE}) begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
<INITIAL>\<\?php([ \t]|{NEW_LINE}) begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
||||||
<INITIAL>\<\? begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
<INITIAL>\<\? begin(PHP);//lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG;
|
||||||
<INITIAL>\<\?= begin(PHP);lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG_WITH_ECHO;
|
<INITIAL>\<\?= begin(PHP);lval.token = string(l.TokenBytes(nil)); return T_OPEN_TAG_WITH_ECHO;
|
||||||
|
|
||||||
<PHP>[ \t\n\r]+ //lval.token = string(l.TokenBytes(nil)); return T_WHITESPACE
|
<PHP>[ \t\n\r]+ //lval.token = string(l.TokenBytes(nil)); return T_WHITESPACE
|
||||||
<PHP>\?\>{NEW_LINE}? begin(INITIAL);lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG;
|
<PHP>\?\>{NEW_LINE}? begin(INITIAL);//lval.token = string(l.TokenBytes(nil)); return T_CLOSE_TAG;
|
||||||
|
|
||||||
<PHP>{DNUM}|{EXPONENT_DNUM} lval.token = string(l.TokenBytes(nil)); return T_DNUMBER
|
<PHP>{DNUM}|{EXPONENT_DNUM} lval.token = string(l.TokenBytes(nil)); return T_DNUMBER
|
||||||
<PHP>{BNUM}
|
<PHP>{BNUM}
|
||||||
|
5
parser.y
5
parser.y
@ -303,6 +303,7 @@ statement:
|
|||||||
| T_GLOBAL global_var_list ';' { $$ = $2; }
|
| T_GLOBAL global_var_list ';' { $$ = $2; }
|
||||||
| T_STATIC static_var_list ';' { $$ = $2; }
|
| T_STATIC static_var_list ';' { $$ = $2; }
|
||||||
| T_ECHO echo_expr_list ';' { $$ = $2; }
|
| T_ECHO echo_expr_list ';' { $$ = $2; }
|
||||||
|
| T_INLINE_HTML { $$ = Node("Echo").append(Node("InlineHtml").attribute("value", $1)) }
|
||||||
| expr ';' { $$ = $1; }
|
| expr ';' { $$ = $1; }
|
||||||
|
|
||||||
if_stmt_without_else:
|
if_stmt_without_else:
|
||||||
@ -610,10 +611,12 @@ simple_variable:
|
|||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
const src = `<?
|
const src = `a<?
|
||||||
|
|
||||||
static $a, $b = $c;
|
static $a, $b = $c;
|
||||||
|
|
||||||
|
?> test<?php
|
||||||
|
|
||||||
echo $a, $b = $c;
|
echo $a, $b = $c;
|
||||||
|
|
||||||
`
|
`
|
||||||
|
Loading…
Reference in New Issue
Block a user