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