29#include "parser.tab.h"
167 while(p1 < ctx->
end && *p2) {
229 while(
ctx->ptr <
ctx->end) {
230 if(*
ctx->ptr ==
'\n' || *
ctx->ptr ==
'\r') {
231 FIXME(
"newline inside string literal\n");
235 if(*
ctx->ptr ==
'"') {
236 if(
ctx->ptr[1] !=
'"')
244 if(
ctx->ptr ==
ctx->end) {
245 FIXME(
"unterminated string literal\n");
255 while(ptr < ctx->
ptr) {
273 if(*
ctx->ptr ==
'0' && !(
'0' <=
ctx->ptr[1] &&
ctx->ptr[1] <=
'9') &&
ctx->ptr[1] !=
'.')
277 hlp =
d*10 + *(
ctx->ptr++) -
'0';
290 if(*
ctx->ptr ==
'.') {
295 hlp =
d*10 + *(
ctx->ptr++) -
'0';
306 if(*
ctx->ptr ==
'e' || *
ctx->ptr ==
'E') {
310 if(*
ctx->ptr ==
'-') {
313 }
else if(*
ctx->ptr ==
'+') {
318 FIXME(
"Invalid numeric literal\n");
325 e =
e*10 + *(
ctx->ptr++) -
'0';
335 FIXME(
"Invalid numeric literal\n");
343 if(use_int && (
LONG)
d ==
d) {
350 FIXME(
"Invalid numeric literal\n");
360 if(
'0' <=
c &&
c <=
'9')
362 if(
'a' <=
c &&
c <=
'f')
364 if(
'A' <=
c &&
c <=
'F')
378 FIXME(
"invalid literal\n");
391 while(*
ctx->ptr ==
' ' || *
ctx->ptr ==
'\t')
412 return ctx->last_token == tNL ? tEOF : tNL;
416 if(
'0' <=
c &&
c <=
'9')
448 if(
ctx->is_html &&
ctx->ptr[1] ==
'-' &&
ctx->ptr[2] ==
'>')
459 if(*
ctx->ptr ==
')') {
461 return tEMPTYBRACKETS;
467 if(*++
ctx->ptr ==
'h' || *
ctx->ptr ==
'H')
471 switch(*++
ctx->ptr) {
479 if(
ctx->is_html &&
ctx->ptr[1] ==
'-' &&
ctx->ptr[2] ==
'-')
484 if(*++
ctx->ptr ==
'=') {
500 if (
ctx->last_token == tEXPRESSION)
502 ctx->last_token = tNL;
510 if(*
ctx->ptr !=
'\n' && *
ctx->ptr !=
'\r') {
511 FIXME(
"'_' not followed by newline\n");
514 if(*
ctx->ptr ==
'\r')
516 if(*
ctx->ptr ==
'\n')
520 if(
ret != tNL ||
ctx->last_token != tNL)
526 return (
ctx->last_token =
ret);
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
static const WCHAR * newlineW
static void * parser_alloc(parser_ctx_t *ctx, DWORD size)
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)
static int check_keyword(parser_ctx_t *ctx, const WCHAR *word, const WCHAR **lval)
static const struct @443 keywords[]
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)
static int hex_to_int(WCHAR c)
#define memcpy(s1, s2, n)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcspbrk(_In_z_ const wchar_t *_Str, _In_z_ const wchar_t *_Control)
static const WCHAR gotoW[]
static const WCHAR byvalW[]
static const WCHAR constW[]
static const WCHAR selectW[]
static const WCHAR byrefW[]
static const WCHAR optionW[]
static int parse_hex_literal(parser_ctx_t *ctx, LONG *ret)
static int comment_line(parser_ctx_t *ctx)
static const WCHAR stopW[]
static const WCHAR thenW[]
static const WCHAR notW[]
static const WCHAR falseW[]
static const WCHAR classW[]
static const WCHAR xorW[]
static const WCHAR errorW[]
static const WCHAR trueW[]
static const WCHAR caseW[]
static const WCHAR elseifW[]
static const WCHAR callW[]
static const WCHAR privateW[]
static const WCHAR nextW[]
static const WCHAR elseW[]
static const WCHAR impW[]
static const WCHAR getW[]
static const WCHAR wendW[]
static const WCHAR remW[]
static const WCHAR propertyW[]
static const WCHAR nothingW[]
static const WCHAR explicitW[]
static const WCHAR stepW[]
static const WCHAR modW[]
static const WCHAR eqvW[]
static const WCHAR emptyW[]
static const WCHAR nullW[]
static const WCHAR andW[]
static const WCHAR letW[]
static const WCHAR endW[]
static const WCHAR eachW[]
static const WCHAR whileW[]
static const WCHAR loopW[]
static const WCHAR defaultW[]
static const WCHAR resumeW[]
static const WCHAR newW[]
static const WCHAR dimW[]
static const WCHAR publicW[]
static const WCHAR untilW[]
static const WCHAR forW[]
static const WCHAR setW[]
static const WCHAR functionW[]
static int parse_next_token(void *lval, parser_ctx_t *ctx)
static const WCHAR exitW[]
static const WCHAR subW[]