29#include "parser.tab.h"
46 {
L"default", tDEFAULT},
57 {
L"explicit", tEXPLICIT},
60 {
L"function", tFUNCTION},
74 {
L"nothing", tNOTHING},
79 {
L"preserve", tPRESERVE},
80 {
L"private", tPRIVATE},
81 {
L"property", tPROPERTY},
112 while(p1 < ctx->
end && *p2) {
174 while(
ctx->ptr <
ctx->end) {
175 if(*
ctx->ptr ==
'\n' || *
ctx->ptr ==
'\r') {
176 FIXME(
"newline inside string literal\n");
180 if(*
ctx->ptr ==
'"') {
181 if(
ctx->ptr[1] !=
'"')
189 if(
ctx->ptr ==
ctx->end) {
190 FIXME(
"unterminated string literal\n");
200 while(ptr < ctx->
ptr) {
218 while(
ctx->ptr <
ctx->end) {
219 if(*
ctx->ptr ==
'\n' || *
ctx->ptr ==
'\r') {
220 FIXME(
"newline inside date literal\n");
229 if(
ctx->ptr ==
ctx->end) {
230 FIXME(
"unterminated date literal\n");
245 FIXME(
"Invalid date literal\n");
260 if(*
ctx->ptr ==
'0' && !(
'0' <=
ctx->ptr[1] &&
ctx->ptr[1] <=
'9') &&
ctx->ptr[1] !=
'.')
264 hlp =
d*10 + *(
ctx->ptr++) -
'0';
277 if(*
ctx->ptr ==
'.') {
282 hlp =
d*10 + *(
ctx->ptr++) -
'0';
293 if(*
ctx->ptr ==
'e' || *
ctx->ptr ==
'E') {
297 if(*
ctx->ptr ==
'-') {
300 }
else if(*
ctx->ptr ==
'+') {
305 FIXME(
"Invalid numeric literal\n");
312 e =
e*10 + *(
ctx->ptr++) -
'0';
322 FIXME(
"Invalid numeric literal\n");
330 if(use_int && (
LONG)
d ==
d) {
337 FIXME(
"Invalid numeric literal\n");
347 if(
'0' <=
c &&
c <=
'9')
349 if(
'a' <=
c &&
c <=
'f')
351 if(
'A' <=
c &&
c <=
'F')
364 if(begin + 9 <
ctx->ptr) {
365 FIXME(
"invalid literal\n");
369 if(*
ctx->ptr ==
'&') {
380 while(*
ctx->ptr ==
' ' || *
ctx->ptr ==
'\t')
399 *loc =
ctx->ptr -
ctx->code;
401 return ctx->last_token == tNL ? 0 : tNL;
405 if(
'0' <=
c &&
c <=
'9')
410 if(
ctx->last_token !=
'.' &&
ctx->last_token != tDOT)
442 c =
ctx->ptr >
ctx->code ?
ctx->ptr[-1] :
'\n';
448 if(
'0' <=
c &&
c <=
'9')
453 if(
ctx->is_html &&
ctx->ptr[1] ==
'-' &&
ctx->ptr[2] ==
'>')
464 if(*
ctx->ptr ==
')') {
466 return tEMPTYBRACKETS;
472 if(
ctx->last_token == tIdentifier ||
ctx->last_token ==
')')
474 return tEXPRLBRACKET;
484 switch(*++
ctx->ptr) {
494 switch(*++
ctx->ptr) {
502 if(
ctx->is_html &&
ctx->ptr[1] ==
'-' &&
ctx->ptr[2] ==
'-')
507 switch(*++
ctx->ptr) {
527 if (
ctx->last_token == tEXPRESSION)
529 ctx->last_token = tNL;
537 if(*
ctx->ptr !=
'\n' && *
ctx->ptr !=
'\r') {
538 FIXME(
"'_' not followed by newline\n");
541 if(*
ctx->ptr ==
'\r')
543 if(*
ctx->ptr ==
'\n')
547 if(
ret != tNL ||
ctx->last_token != tNL)
553 return (
ctx->last_token =
ret);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static void * parser_alloc(parser_ctx_t *ctx, DWORD size)
_ACRTIMP wchar_t *__cdecl wcspbrk(const wchar_t *, const wchar_t *)
HRESULT WINAPI VarDateFromStr(OLECHAR *strIn, LCID lcid, ULONG dwFlags, DATE *pdateOut)
double pow(double x, double y)
GLdouble GLdouble GLdouble r
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
static BOOL skip_spaces(parser_ctx_t *ctx)
static int check_keywords(parser_ctx_t *ctx, const WCHAR **lval)
static int parse_string_literal(parser_ctx_t *ctx, jsstr_t **ret, WCHAR endch)
int parser_lex(void *lval, unsigned *loc, parser_ctx_t *ctx)
static const struct @442 keywords[]
static int check_keyword(parser_ctx_t *ctx, const WCHAR *word, const WCHAR **lval)
BOOL is_identifier_char(WCHAR c)
static int parse_identifier(parser_ctx_t *ctx, const WCHAR **ret)
static BOOL parse_numeric_literal(parser_ctx_t *ctx, double *ret)
#define memcpy(s1, s2, n)
static int parse_hex_literal(parser_ctx_t *ctx, LONG *ret)
static int comment_line(parser_ctx_t *ctx)
static int parse_date_literal(parser_ctx_t *ctx, DATE *ret)
static int parse_next_token(void *lval, unsigned *loc, parser_ctx_t *ctx)