OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*******************************************************************************/
-#include <php_psi_stdinc.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#else
+# include "php_config.h"
+#endif
#include "parser.h"
#include "plist.h"
+#include "debug.h"
/*!max:re2c*/
#ifndef YYMAXFILL
#define NEWLINE() \
eol = cur; \
- ++I->lines
+ ++lines
#define NEWTOKEN(t) do { \
if (t == PSI_T_COMMENT || t == PSI_T_WHITESPACE) { \
- token = psi_token_init(t, "", 0, tok - eol + 1, I->lines, I->file); \
+ token = psi_token_init(t, "", 0, tok - eol + 1, lines, I->file); \
} else { \
- token = psi_token_init(t, tok, cur - tok, tok - eol + 1, I->lines, I->file); \
+ token = psi_token_init(t, tok, cur - tok, tok - eol + 1, lines, I->file); \
} \
tokens = psi_plist_add(tokens, &token); \
- PSI_DEBUG_PRINT(P, "PSI: scanned < "); \
- PSI_DEBUG_DUMP(P, psi_token_dump, token); \
+ PSI_DEBUG_LOCK(P, \
+ PSI_DEBUG_PRINT(P, "PSI: scanned < "); \
+ PSI_DEBUG_DUMP(P, psi_token_dump, token); \
+ ); \
} while(0)
#define CHECKEOF() if (cur >= lim - YYMAXFILL) goto done
struct psi_plist *tokens;
struct psi_token *token;
const char *tok, *cur, *lim, *mrk, *eol, *ctxmrk;
- unsigned parens;
+ unsigned char_width, parens, lines = 1;
bool escaped;
- token_t char_width;
PSI_DEBUG_PRINT(P, "PSI: scanning %s\n", I->file->val);
tok = mrk = eol = cur = I->buffer;
lim = I->buffer + I->length + YYMAXFILL;
- I->lines = 1;
tokens = psi_plist_init((psi_plist_dtor) psi_token_free);
start: ;
INT_CONST / ('llu' | 'ull') { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_INT | PSI_NUMBER_ULL; cur += 3; goto start; }
FLT_CONST { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT; goto start; }
- FLT_CONST / 'f' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_F; cur += 1; goto start; }
- FLT_CONST / 'l' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_L; cur += 1; goto start; }
+ FLT_CONST / 'f' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_F; cur += 1; goto start; }
+ FLT_CONST / 'l' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_L; cur += 1; goto start; }
FLT_CONST / 'df' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DF; cur += 2; goto start; }
FLT_CONST / 'dd' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DD; cur += 2; goto start; }
FLT_CONST / 'dl' { NEWTOKEN(PSI_T_NUMBER); token->flags = PSI_NUMBER_FLT | PSI_NUMBER_DL; cur += 2; goto start; }
"u8" / "\"" { char_width = 1; }
"u" / ['"] { char_width = 2; }
"U" / ['"] { char_width = 4; }
- "L" / ['"] { char_width = sizeof(wchar_t)/8; }
+ "L" / ['"] { char_width = sizeof(wchar_t); }
"/*" { goto comment; }
"//" { goto comment_sl; }