z7zmey / php-parser

PHP parser written in Go

Home Page:https://php-parser.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

parser.Parse hangs up

vasileknik76 opened this issue · comments

I have run parse with following PHP code:

<?php

$foo = 5;

echo "$foo$";

and parser hangs up. Debug output:

reduce 80 in:
        state-0
char tok--1 in state-2
lex T_VARIABLE(57354)
char tok--1 in state-107
reduce 441 in:
        state-107
char tok--1 in state-80
reduce 432 in:
        state-80
char tok--1 in state-48
lex '='(61)
reduce 438 in:
        state-48
char '=' in state-44
char tok--1 in state-203
lex T_LNUMBER(57350)
char tok--1 in state-94
reduce 402 in:
        state-94
char tok--1 in state-72
reduce 364 in:
        state-72
char tok--1 in state-45
reduce 422 in:
        state-45
char tok--1 in state-392
lex ';'(59)
reduce 298 in:
        state-392
char ';' in state-45
reduce 422 in:
        state-45
char ';' in state-28
char tok--1 in state-154
reduce 146 in:
        state-154
char tok--1 in state-5
reduce 87 in:
        state-5
char tok--1 in state-3
reduce 79 in:
        state-3
char tok--1 in state-2
lex T_ECHO(57361)
char tok--1 in state-26
lex '"'(34)
char tok--1 in state-105
lex T_VARIABLE(57354)
char tok--1 in state-259

Hi @vasileknik76.
I have solved this bug. It was due to the scanner getting to infinite loop when $ appear between a variable and the end of a template string.