mirror of
https://github.com/ZDoom/gzdoom-gles.git
synced 2024-12-11 04:51:13 +00:00
2861 lines
60 KiB
C++
2861 lines
60 KiB
C++
/* Generated by re2c 0.16 on Thu Jan 21 10:47:47 2016 */
|
|
#line 1 "../src/parse/lex.re"
|
|
#include "src/util/c99_stdint.h"
|
|
#include <stddef.h>
|
|
#include <string.h>
|
|
#include <algorithm>
|
|
#include <limits>
|
|
#include <string>
|
|
|
|
#include "src/codegen/output.h"
|
|
#include "src/conf/opt.h"
|
|
#include "src/conf/warn.h"
|
|
#include "src/globals.h"
|
|
#include "src/ir/regexp/encoding/enc.h"
|
|
#include "src/ir/regexp/regexp.h"
|
|
#include "src/ir/regexp/regexp_null.h"
|
|
#include "src/parse/code.h"
|
|
#include "src/parse/extop.h"
|
|
#include "src/parse/input.h"
|
|
#include "src/parse/scanner.h"
|
|
#include "src/parse/parser.h" // needed by "y.tab.h"
|
|
#include "src/parse/unescape.h"
|
|
#include "src/util/range.h"
|
|
#include "src/util/s_to_n32_unsafe.h"
|
|
#include "y.tab.h"
|
|
|
|
extern YYSTYPE yylval;
|
|
|
|
#define YYCTYPE unsigned char
|
|
#define YYCURSOR cur
|
|
#define YYLIMIT lim
|
|
#define YYMARKER ptr
|
|
#define YYCTXMARKER ctx
|
|
#define YYFILL(n) { fill (n); }
|
|
|
|
namespace re2c
|
|
{
|
|
|
|
// source code is in ASCII: pointers have type 'char *'
|
|
// but re2c makes an implicit assumption that YYCTYPE is unsigned
|
|
// when it generates comparisons
|
|
#line 42 "../src/parse/lex.re"
|
|
|
|
|
|
#line 62 "../src/parse/lex.re"
|
|
|
|
|
|
Scanner::ParseMode Scanner::echo()
|
|
{
|
|
bool ignore_eoc = false;
|
|
int ignore_cnt = 0;
|
|
|
|
if (eof && cur == eof) // Catch EOF
|
|
{
|
|
return Stop;
|
|
}
|
|
|
|
tok = cur;
|
|
echo:
|
|
|
|
#line 62 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept = 0;
|
|
static const unsigned char yybm[] = {
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 160, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
160, 128, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 0, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
};
|
|
if ((YYLIMIT - YYCURSOR) < 16) YYFILL(16);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '%') {
|
|
if (yych <= '\t') {
|
|
if (yych >= 0x01) goto yy4;
|
|
} else {
|
|
if (yych <= '\n') goto yy6;
|
|
if (yych <= '$') goto yy4;
|
|
goto yy8;
|
|
}
|
|
} else {
|
|
if (yych <= '*') {
|
|
if (yych <= ')') goto yy4;
|
|
goto yy9;
|
|
} else {
|
|
if (yych == '/') goto yy10;
|
|
goto yy4;
|
|
}
|
|
}
|
|
++YYCURSOR;
|
|
#line 202 "../src/parse/lex.re"
|
|
{
|
|
if (!ignore_eoc && opts->target == opt_t::CODE)
|
|
{
|
|
out.wraw(tok, tok_len () - 1);
|
|
// -1 so we don't write out the \0
|
|
}
|
|
if(cur == eof)
|
|
{
|
|
return Stop;
|
|
}
|
|
}
|
|
#line 132 "src/parse/lex.cc"
|
|
yy4:
|
|
++YYCURSOR;
|
|
yy5:
|
|
#line 213 "../src/parse/lex.re"
|
|
{
|
|
goto echo;
|
|
}
|
|
#line 140 "src/parse/lex.cc"
|
|
yy6:
|
|
yyaccept = 0;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy11;
|
|
}
|
|
if (yych == '#') goto yy14;
|
|
yy7:
|
|
#line 189 "../src/parse/lex.re"
|
|
{
|
|
if (ignore_eoc)
|
|
{
|
|
ignore_cnt++;
|
|
}
|
|
else if (opts->target == opt_t::CODE)
|
|
{
|
|
out.wraw(tok, tok_len ());
|
|
}
|
|
tok = pos = cur;
|
|
cline++;
|
|
goto echo;
|
|
}
|
|
#line 163 "src/parse/lex.cc"
|
|
yy8:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '{') goto yy16;
|
|
goto yy5;
|
|
yy9:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '/') goto yy18;
|
|
goto yy5;
|
|
yy10:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '*') goto yy20;
|
|
goto yy5;
|
|
yy11:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy11;
|
|
}
|
|
if (yych == '#') goto yy14;
|
|
yy13:
|
|
YYCURSOR = YYMARKER;
|
|
if (yyaccept <= 1) {
|
|
if (yyaccept == 0) {
|
|
goto yy7;
|
|
} else {
|
|
goto yy5;
|
|
}
|
|
} else {
|
|
goto yy19;
|
|
}
|
|
yy14:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy14;
|
|
goto yy13;
|
|
} else {
|
|
if (yych <= ' ') goto yy14;
|
|
if (yych == 'l') goto yy21;
|
|
goto yy13;
|
|
}
|
|
yy16:
|
|
++YYCURSOR;
|
|
#line 78 "../src/parse/lex.re"
|
|
{
|
|
if (opts->rFlag)
|
|
{
|
|
fatal("found standard 're2c' block while using -r flag");
|
|
}
|
|
if (opts->target == opt_t::CODE)
|
|
{
|
|
const size_t lexeme_len = cur[-1] == '{'
|
|
? sizeof ("%{") - 1
|
|
: sizeof ("/*!re2c") - 1;
|
|
out.wraw(tok, tok_len () - lexeme_len);
|
|
}
|
|
tok = cur;
|
|
return Parse;
|
|
}
|
|
#line 226 "src/parse/lex.cc"
|
|
yy18:
|
|
yyaccept = 2;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '\n') goto yy22;
|
|
if (yych == '\r') goto yy24;
|
|
yy19:
|
|
#line 168 "../src/parse/lex.re"
|
|
{
|
|
if (ignore_eoc)
|
|
{
|
|
if (ignore_cnt)
|
|
{
|
|
out.ws("\n").wline_info (cline, get_fname ().c_str ());
|
|
}
|
|
ignore_eoc = false;
|
|
ignore_cnt = 0;
|
|
}
|
|
else if (opts->target == opt_t::CODE)
|
|
{
|
|
out.wraw(tok, tok_len ());
|
|
}
|
|
tok = pos = cur;
|
|
goto echo;
|
|
}
|
|
#line 251 "src/parse/lex.cc"
|
|
yy20:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '!') goto yy25;
|
|
goto yy13;
|
|
yy21:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'i') goto yy26;
|
|
goto yy13;
|
|
yy22:
|
|
++YYCURSOR;
|
|
#line 150 "../src/parse/lex.re"
|
|
{
|
|
cline++;
|
|
if (ignore_eoc)
|
|
{
|
|
if (ignore_cnt)
|
|
{
|
|
out.wline_info (cline, get_fname ().c_str ());
|
|
}
|
|
ignore_eoc = false;
|
|
ignore_cnt = 0;
|
|
}
|
|
else if (opts->target == opt_t::CODE)
|
|
{
|
|
out.wraw(tok, tok_len ());
|
|
}
|
|
tok = pos = cur;
|
|
goto echo;
|
|
}
|
|
#line 281 "src/parse/lex.cc"
|
|
yy24:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy22;
|
|
goto yy13;
|
|
yy25:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
switch (yych) {
|
|
case 'g': goto yy27;
|
|
case 'i': goto yy28;
|
|
case 'm': goto yy29;
|
|
case 'r': goto yy30;
|
|
case 't': goto yy31;
|
|
case 'u': goto yy32;
|
|
default: goto yy13;
|
|
}
|
|
yy26:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'n') goto yy33;
|
|
goto yy13;
|
|
yy27:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy34;
|
|
goto yy13;
|
|
yy28:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'g') goto yy35;
|
|
goto yy13;
|
|
yy29:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'a') goto yy36;
|
|
goto yy13;
|
|
yy30:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy37;
|
|
if (yych == 'u') goto yy38;
|
|
goto yy13;
|
|
yy31:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'y') goto yy39;
|
|
goto yy13;
|
|
yy32:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 's') goto yy40;
|
|
goto yy13;
|
|
yy33:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy41;
|
|
goto yy13;
|
|
yy34:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 't') goto yy42;
|
|
goto yy13;
|
|
yy35:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'n') goto yy43;
|
|
goto yy13;
|
|
yy36:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'x') goto yy44;
|
|
goto yy13;
|
|
yy37:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy45;
|
|
goto yy13;
|
|
yy38:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'l') goto yy46;
|
|
goto yy13;
|
|
yy39:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'p') goto yy47;
|
|
goto yy13;
|
|
yy40:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy48;
|
|
goto yy13;
|
|
yy41:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '0') goto yy50;
|
|
if (yych <= '9') goto yy13;
|
|
goto yy50;
|
|
yy42:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 's') goto yy51;
|
|
goto yy13;
|
|
yy43:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'o') goto yy52;
|
|
goto yy13;
|
|
yy44:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy53;
|
|
goto yy13;
|
|
yy45:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy16;
|
|
goto yy13;
|
|
yy46:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy54;
|
|
goto yy13;
|
|
yy47:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy55;
|
|
goto yy13;
|
|
yy48:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy56;
|
|
goto yy13;
|
|
yy49:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
yy50:
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy49;
|
|
goto yy13;
|
|
} else {
|
|
if (yych <= ' ') goto yy49;
|
|
if (yych <= '0') goto yy13;
|
|
if (yych <= '9') goto yy57;
|
|
goto yy13;
|
|
}
|
|
yy51:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 't') goto yy59;
|
|
goto yy13;
|
|
yy52:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy60;
|
|
goto yy13;
|
|
yy53:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy61;
|
|
goto yy13;
|
|
yy54:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 's') goto yy62;
|
|
goto yy13;
|
|
yy55:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 's') goto yy63;
|
|
goto yy13;
|
|
yy56:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy64;
|
|
goto yy13;
|
|
yy57:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy57;
|
|
}
|
|
if (yych <= '\f') {
|
|
if (yych <= 0x08) goto yy13;
|
|
if (yych <= '\t') goto yy65;
|
|
if (yych <= '\n') goto yy67;
|
|
goto yy13;
|
|
} else {
|
|
if (yych <= '\r') goto yy69;
|
|
if (yych == ' ') goto yy65;
|
|
goto yy13;
|
|
}
|
|
yy59:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'a') goto yy70;
|
|
goto yy13;
|
|
yy60:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy71;
|
|
goto yy13;
|
|
yy61:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy72;
|
|
goto yy13;
|
|
yy62:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy73;
|
|
goto yy13;
|
|
yy63:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy74;
|
|
goto yy13;
|
|
yy64:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy75;
|
|
goto yy13;
|
|
yy65:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy65;
|
|
goto yy13;
|
|
} else {
|
|
if (yych <= ' ') goto yy65;
|
|
if (yych == '"') goto yy76;
|
|
goto yy13;
|
|
}
|
|
yy67:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 185 "../src/parse/lex.re"
|
|
{
|
|
set_sourceline ();
|
|
goto echo;
|
|
}
|
|
#line 491 "src/parse/lex.cc"
|
|
yy69:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy67;
|
|
goto yy13;
|
|
yy70:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 't') goto yy78;
|
|
goto yy13;
|
|
yy71:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy79;
|
|
goto yy13;
|
|
yy72:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy80;
|
|
goto yy13;
|
|
yy73:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy81;
|
|
goto yy13;
|
|
yy74:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy82;
|
|
goto yy13;
|
|
yy75:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy83;
|
|
goto yy13;
|
|
yy76:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 128) {
|
|
goto yy76;
|
|
}
|
|
if (yych <= '\n') goto yy13;
|
|
if (yych <= '"') goto yy84;
|
|
goto yy85;
|
|
yy78:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy86;
|
|
goto yy13;
|
|
yy79:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy87;
|
|
goto yy13;
|
|
yy80:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy88;
|
|
goto yy13;
|
|
yy81:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy90;
|
|
goto yy13;
|
|
yy82:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy91;
|
|
goto yy13;
|
|
yy83:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy92;
|
|
goto yy13;
|
|
yy84:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy67;
|
|
if (yych == '\r') goto yy69;
|
|
goto yy13;
|
|
yy85:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy13;
|
|
goto yy76;
|
|
yy86:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == ':') goto yy94;
|
|
goto yy13;
|
|
yy87:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy95;
|
|
goto yy13;
|
|
yy88:
|
|
++YYCURSOR;
|
|
#line 119 "../src/parse/lex.re"
|
|
{
|
|
if (opts->target != opt_t::DOT)
|
|
{
|
|
out.wdelay_yymaxfill ();
|
|
}
|
|
tok = pos = cur;
|
|
ignore_eoc = true;
|
|
goto echo;
|
|
}
|
|
#line 585 "src/parse/lex.cc"
|
|
yy90:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy96;
|
|
goto yy13;
|
|
yy91:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy97;
|
|
goto yy13;
|
|
yy92:
|
|
++YYCURSOR;
|
|
#line 105 "../src/parse/lex.re"
|
|
{
|
|
if (!opts->rFlag)
|
|
{
|
|
fatal("found 'use:re2c' block without -r flag");
|
|
}
|
|
reuse();
|
|
if (opts->target == opt_t::CODE)
|
|
{
|
|
const size_t lexeme_len = sizeof ("/*!use:re2c") - 1;
|
|
out.wraw(tok, tok_len () - lexeme_len);
|
|
}
|
|
tok = cur;
|
|
return Reuse;
|
|
}
|
|
#line 611 "src/parse/lex.cc"
|
|
yy94:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'r') goto yy98;
|
|
goto yy13;
|
|
yy95:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy99;
|
|
goto yy13;
|
|
yy96:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy100;
|
|
goto yy13;
|
|
yy97:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy102;
|
|
goto yy13;
|
|
yy98:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy104;
|
|
goto yy13;
|
|
yy99:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'c') goto yy105;
|
|
goto yy13;
|
|
yy100:
|
|
++YYCURSOR;
|
|
#line 93 "../src/parse/lex.re"
|
|
{
|
|
if (opts->rFlag)
|
|
{
|
|
opts.reset_mapCodeName ();
|
|
}
|
|
else
|
|
{
|
|
fatal("found 'rules:re2c' block without -r flag");
|
|
}
|
|
tok = cur;
|
|
return Rules;
|
|
}
|
|
#line 651 "src/parse/lex.cc"
|
|
yy102:
|
|
++YYCURSOR;
|
|
#line 139 "../src/parse/lex.re"
|
|
{
|
|
tok = pos = cur;
|
|
ignore_eoc = true;
|
|
if (opts->target != opt_t::DOT)
|
|
{
|
|
out.wdelay_line_info ().ws("\n")
|
|
.wdelay_types ().ws("\n")
|
|
.wline_info (cline, get_fname ().c_str ());
|
|
}
|
|
goto echo;
|
|
}
|
|
#line 666 "src/parse/lex.cc"
|
|
yy104:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '2') goto yy107;
|
|
goto yy13;
|
|
yy105:
|
|
++YYCURSOR;
|
|
#line 134 "../src/parse/lex.re"
|
|
{
|
|
tok = pos = cur;
|
|
ignore_eoc = true;
|
|
goto echo;
|
|
}
|
|
#line 679 "src/parse/lex.cc"
|
|
yy107:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'c') goto yy13;
|
|
++YYCURSOR;
|
|
#line 128 "../src/parse/lex.re"
|
|
{
|
|
tok = pos = cur;
|
|
out.wdelay_state_goto (opts->topIndent);
|
|
ignore_eoc = true;
|
|
goto echo;
|
|
}
|
|
#line 691 "src/parse/lex.cc"
|
|
}
|
|
#line 216 "../src/parse/lex.re"
|
|
|
|
}
|
|
|
|
int Scanner::scan()
|
|
{
|
|
uint32_t depth;
|
|
|
|
scan:
|
|
tchar = cur - pos;
|
|
tline = cline;
|
|
tok = cur;
|
|
switch (lexer_state)
|
|
{
|
|
case LEX_NORMAL: goto start;
|
|
case LEX_FLEX_NAME: goto flex_name;
|
|
}
|
|
|
|
start:
|
|
|
|
#line 713 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept = 0;
|
|
static const unsigned char yybm[] = {
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 144, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
144, 128, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
224, 224, 224, 224, 224, 224, 224, 224,
|
|
224, 224, 128, 128, 128, 128, 128, 128,
|
|
128, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 128, 0, 128, 128, 160,
|
|
128, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 160, 160, 160, 160, 160,
|
|
160, 160, 160, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
};
|
|
if ((YYLIMIT - YYCURSOR) < 6) YYFILL(6);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 16) {
|
|
goto yy114;
|
|
}
|
|
if (yych <= '9') {
|
|
if (yych <= '&') {
|
|
if (yych <= '\r') {
|
|
if (yych <= 0x08) goto yy112;
|
|
if (yych <= '\n') goto yy117;
|
|
if (yych >= '\r') goto yy119;
|
|
} else {
|
|
if (yych <= '"') {
|
|
if (yych >= '"') goto yy120;
|
|
} else {
|
|
if (yych == '%') goto yy122;
|
|
}
|
|
}
|
|
} else {
|
|
if (yych <= '+') {
|
|
if (yych <= '\'') goto yy123;
|
|
if (yych <= ')') goto yy125;
|
|
if (yych <= '*') goto yy127;
|
|
goto yy129;
|
|
} else {
|
|
if (yych <= '-') {
|
|
if (yych <= ',') goto yy125;
|
|
} else {
|
|
if (yych <= '.') goto yy131;
|
|
if (yych <= '/') goto yy133;
|
|
goto yy134;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
if (yych <= '\\') {
|
|
if (yych <= '>') {
|
|
if (yych <= ':') goto yy135;
|
|
if (yych == '<') goto yy136;
|
|
goto yy125;
|
|
} else {
|
|
if (yych <= '@') {
|
|
if (yych <= '?') goto yy129;
|
|
} else {
|
|
if (yych <= 'Z') goto yy134;
|
|
if (yych <= '[') goto yy137;
|
|
goto yy125;
|
|
}
|
|
}
|
|
} else {
|
|
if (yych <= 'q') {
|
|
if (yych == '_') goto yy134;
|
|
if (yych >= 'a') goto yy134;
|
|
} else {
|
|
if (yych <= 'z') {
|
|
if (yych <= 'r') goto yy139;
|
|
goto yy134;
|
|
} else {
|
|
if (yych <= '{') goto yy140;
|
|
if (yych <= '|') goto yy125;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
yy112:
|
|
++YYCURSOR;
|
|
yy113:
|
|
#line 388 "../src/parse/lex.re"
|
|
{
|
|
fatalf("unexpected character: '%c'", *tok);
|
|
goto scan;
|
|
}
|
|
#line 823 "src/parse/lex.cc"
|
|
yy114:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 16) {
|
|
goto yy114;
|
|
}
|
|
#line 372 "../src/parse/lex.re"
|
|
{
|
|
goto scan;
|
|
}
|
|
#line 835 "src/parse/lex.cc"
|
|
yy117:
|
|
yyaccept = 0;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy142;
|
|
} else {
|
|
if (yych <= ' ') goto yy142;
|
|
if (yych == '#') goto yy145;
|
|
}
|
|
yy118:
|
|
#line 381 "../src/parse/lex.re"
|
|
{
|
|
if (cur == eof) return 0;
|
|
pos = cur;
|
|
cline++;
|
|
goto scan;
|
|
}
|
|
#line 853 "src/parse/lex.cc"
|
|
yy119:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy117;
|
|
goto yy113;
|
|
yy120:
|
|
++YYCURSOR;
|
|
#line 265 "../src/parse/lex.re"
|
|
{ yylval.regexp = lex_str('"', opts->bCaseInsensitive || opts->bCaseInverted); return TOKEN_REGEXP; }
|
|
#line 862 "src/parse/lex.cc"
|
|
yy122:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '}') goto yy147;
|
|
goto yy113;
|
|
yy123:
|
|
++YYCURSOR;
|
|
#line 264 "../src/parse/lex.re"
|
|
{ yylval.regexp = lex_str('\'', opts->bCaseInsensitive || !opts->bCaseInverted); return TOKEN_REGEXP; }
|
|
#line 871 "src/parse/lex.cc"
|
|
yy125:
|
|
++YYCURSOR;
|
|
yy126:
|
|
#line 275 "../src/parse/lex.re"
|
|
{
|
|
return *tok;
|
|
}
|
|
#line 879 "src/parse/lex.cc"
|
|
yy127:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) == '/') goto yy147;
|
|
#line 279 "../src/parse/lex.re"
|
|
{
|
|
yylval.op = *tok;
|
|
return TOKEN_STAR;
|
|
}
|
|
#line 888 "src/parse/lex.cc"
|
|
yy129:
|
|
++YYCURSOR;
|
|
#line 283 "../src/parse/lex.re"
|
|
{
|
|
yylval.op = *tok;
|
|
return TOKEN_CLOSE;
|
|
}
|
|
#line 896 "src/parse/lex.cc"
|
|
yy131:
|
|
++YYCURSOR;
|
|
#line 367 "../src/parse/lex.re"
|
|
{
|
|
yylval.regexp = mkDot();
|
|
return TOKEN_REGEXP;
|
|
}
|
|
#line 904 "src/parse/lex.cc"
|
|
yy133:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '*') goto yy149;
|
|
if (yych == '/') goto yy151;
|
|
goto yy126;
|
|
yy134:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
goto yy159;
|
|
yy135:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych == '=') goto yy160;
|
|
goto yy113;
|
|
yy136:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '!') goto yy162;
|
|
if (yych == '>') goto yy164;
|
|
goto yy126;
|
|
yy137:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) == '^') goto yy165;
|
|
#line 266 "../src/parse/lex.re"
|
|
{ yylval.regexp = lex_cls(false); return TOKEN_REGEXP; }
|
|
#line 930 "src/parse/lex.cc"
|
|
yy139:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych == 'e') goto yy167;
|
|
goto yy159;
|
|
yy140:
|
|
yyaccept = 2;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy170;
|
|
}
|
|
if (yych <= 'Z') {
|
|
if (yych == ',') goto yy168;
|
|
if (yych >= 'A') goto yy172;
|
|
} else {
|
|
if (yych <= '_') {
|
|
if (yych >= '_') goto yy172;
|
|
} else {
|
|
if (yych <= '`') goto yy141;
|
|
if (yych <= 'z') goto yy172;
|
|
}
|
|
}
|
|
yy141:
|
|
#line 235 "../src/parse/lex.re"
|
|
{
|
|
depth = 1;
|
|
goto code;
|
|
}
|
|
#line 959 "src/parse/lex.cc"
|
|
yy142:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy142;
|
|
} else {
|
|
if (yych <= ' ') goto yy142;
|
|
if (yych == '#') goto yy145;
|
|
}
|
|
yy144:
|
|
YYCURSOR = YYMARKER;
|
|
if (yyaccept <= 1) {
|
|
if (yyaccept == 0) {
|
|
goto yy118;
|
|
} else {
|
|
goto yy126;
|
|
}
|
|
} else {
|
|
if (yyaccept == 2) {
|
|
goto yy141;
|
|
} else {
|
|
goto yy169;
|
|
}
|
|
}
|
|
yy145:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy145;
|
|
goto yy144;
|
|
} else {
|
|
if (yych <= ' ') goto yy145;
|
|
if (yych == 'l') goto yy174;
|
|
goto yy144;
|
|
}
|
|
yy147:
|
|
++YYCURSOR;
|
|
#line 259 "../src/parse/lex.re"
|
|
{
|
|
tok = cur;
|
|
return 0;
|
|
}
|
|
#line 1004 "src/parse/lex.cc"
|
|
yy149:
|
|
++YYCURSOR;
|
|
#line 253 "../src/parse/lex.re"
|
|
{
|
|
depth = 1;
|
|
goto comment;
|
|
}
|
|
#line 1012 "src/parse/lex.cc"
|
|
yy151:
|
|
++YYCURSOR;
|
|
#line 250 "../src/parse/lex.re"
|
|
{
|
|
goto nextLine;
|
|
}
|
|
#line 1019 "src/parse/lex.cc"
|
|
yy153:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 351 "../src/parse/lex.re"
|
|
{
|
|
if (!opts->FFlag) {
|
|
yylval.str = new std::string (tok, tok_len());
|
|
return TOKEN_ID;
|
|
} else {
|
|
RegExp *r = NULL;
|
|
const bool casing = opts->bCaseInsensitive || opts->bCaseInverted;
|
|
for (char *s = tok; s < cur; ++s) {
|
|
const uint32_t c = static_cast<uint8_t>(*s);
|
|
r = doCat(r, casing ? ichr(c) : schr(c));
|
|
}
|
|
yylval.regexp = r ? r : new NullOp;
|
|
return TOKEN_REGEXP;
|
|
}
|
|
}
|
|
#line 1039 "src/parse/lex.cc"
|
|
yy155:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
goto yy178;
|
|
yy156:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 346 "../src/parse/lex.re"
|
|
{
|
|
yylval.str = new std::string (tok, tok_len ());
|
|
return TOKEN_ID;
|
|
}
|
|
#line 1051 "src/parse/lex.cc"
|
|
yy158:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
yy159:
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy158;
|
|
}
|
|
if (yych <= ' ') {
|
|
if (yych == '\t') goto yy155;
|
|
if (yych <= 0x1F) goto yy153;
|
|
goto yy155;
|
|
} else {
|
|
if (yych <= ',') {
|
|
if (yych <= '+') goto yy153;
|
|
goto yy156;
|
|
} else {
|
|
if (yych <= '<') goto yy153;
|
|
if (yych <= '>') goto yy156;
|
|
goto yy153;
|
|
}
|
|
}
|
|
yy160:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) == '>') goto yy179;
|
|
#line 244 "../src/parse/lex.re"
|
|
{
|
|
tok += 2; /* skip ":=" */
|
|
depth = 0;
|
|
goto code;
|
|
}
|
|
#line 1084 "src/parse/lex.cc"
|
|
yy162:
|
|
++YYCURSOR;
|
|
#line 272 "../src/parse/lex.re"
|
|
{
|
|
return TOKEN_SETUP;
|
|
}
|
|
#line 1091 "src/parse/lex.cc"
|
|
yy164:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
goto yy182;
|
|
yy165:
|
|
++YYCURSOR;
|
|
#line 267 "../src/parse/lex.re"
|
|
{ yylval.regexp = lex_cls(true); return TOKEN_REGEXP; }
|
|
#line 1100 "src/parse/lex.cc"
|
|
yy167:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych == '2') goto yy187;
|
|
goto yy159;
|
|
yy168:
|
|
++YYCURSOR;
|
|
yy169:
|
|
#line 319 "../src/parse/lex.re"
|
|
{
|
|
fatal("illegal closure form, use '{n}', '{n,}', '{n,m}' where n and m are numbers");
|
|
}
|
|
#line 1113 "src/parse/lex.cc"
|
|
yy170:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy170;
|
|
}
|
|
if (yych <= '^') {
|
|
if (yych <= ',') {
|
|
if (yych <= '+') goto yy144;
|
|
goto yy188;
|
|
} else {
|
|
if (yych <= '@') goto yy144;
|
|
if (yych >= '[') goto yy144;
|
|
}
|
|
} else {
|
|
if (yych <= 'z') {
|
|
if (yych == '`') goto yy144;
|
|
} else {
|
|
if (yych == '}') goto yy189;
|
|
goto yy144;
|
|
}
|
|
}
|
|
yy172:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '^') {
|
|
if (yych <= '9') {
|
|
if (yych <= '/') goto yy144;
|
|
goto yy172;
|
|
} else {
|
|
if (yych <= '@') goto yy144;
|
|
if (yych <= 'Z') goto yy172;
|
|
goto yy144;
|
|
}
|
|
} else {
|
|
if (yych <= 'z') {
|
|
if (yych == '`') goto yy144;
|
|
goto yy172;
|
|
} else {
|
|
if (yych == '}') goto yy191;
|
|
goto yy144;
|
|
}
|
|
}
|
|
yy174:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'i') goto yy193;
|
|
goto yy144;
|
|
yy175:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 333 "../src/parse/lex.re"
|
|
{
|
|
yylval.str = new std::string (tok, tok_len ());
|
|
if (opts->FFlag)
|
|
{
|
|
lexer_state = LEX_FLEX_NAME;
|
|
return TOKEN_FID;
|
|
}
|
|
else
|
|
{
|
|
return TOKEN_ID;
|
|
}
|
|
}
|
|
#line 1179 "src/parse/lex.cc"
|
|
yy177:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
yy178:
|
|
if (yych <= ' ') {
|
|
if (yych == '\t') goto yy177;
|
|
if (yych <= 0x1F) goto yy175;
|
|
goto yy177;
|
|
} else {
|
|
if (yych <= ',') {
|
|
if (yych <= '+') goto yy175;
|
|
goto yy156;
|
|
} else {
|
|
if (yych <= '<') goto yy175;
|
|
if (yych <= '>') goto yy156;
|
|
goto yy175;
|
|
}
|
|
}
|
|
yy179:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 240 "../src/parse/lex.re"
|
|
{
|
|
return *tok;
|
|
}
|
|
#line 1206 "src/parse/lex.cc"
|
|
yy181:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
yy182:
|
|
if (yych <= '9') {
|
|
if (yych <= '\t') {
|
|
if (yych <= 0x08) goto yy144;
|
|
goto yy181;
|
|
} else {
|
|
if (yych == ' ') goto yy181;
|
|
goto yy144;
|
|
}
|
|
} else {
|
|
if (yych <= '=') {
|
|
if (yych <= ':') goto yy183;
|
|
if (yych <= '<') goto yy144;
|
|
goto yy184;
|
|
} else {
|
|
if (yych == '{') goto yy185;
|
|
goto yy144;
|
|
}
|
|
}
|
|
yy183:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '=') goto yy185;
|
|
goto yy144;
|
|
yy184:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != '>') goto yy144;
|
|
yy185:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 269 "../src/parse/lex.re"
|
|
{
|
|
return TOKEN_NOCOND;
|
|
}
|
|
#line 1244 "src/parse/lex.cc"
|
|
yy187:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych == 'c') goto yy194;
|
|
goto yy159;
|
|
yy188:
|
|
yyaccept = 3;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '/') goto yy169;
|
|
if (yych <= '9') goto yy195;
|
|
if (yych == '}') goto yy197;
|
|
goto yy169;
|
|
yy189:
|
|
++YYCURSOR;
|
|
#line 288 "../src/parse/lex.re"
|
|
{
|
|
if (!s_to_u32_unsafe (tok + 1, cur - 1, yylval.extop.min))
|
|
{
|
|
fatal ("repetition count overflow");
|
|
}
|
|
yylval.extop.max = yylval.extop.min;
|
|
return TOKEN_CLOSESIZE;
|
|
}
|
|
#line 1268 "src/parse/lex.cc"
|
|
yy191:
|
|
++YYCURSOR;
|
|
#line 323 "../src/parse/lex.re"
|
|
{
|
|
if (!opts->FFlag) {
|
|
fatal("curly braces for names only allowed with -F switch");
|
|
}
|
|
yylval.str = new std::string (tok + 1, tok_len () - 2); // -2 to omit braces
|
|
return TOKEN_ID;
|
|
}
|
|
#line 1279 "src/parse/lex.cc"
|
|
yy193:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'n') goto yy199;
|
|
goto yy144;
|
|
yy194:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych == ':') goto yy200;
|
|
goto yy159;
|
|
yy195:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '/') goto yy144;
|
|
if (yych <= '9') goto yy195;
|
|
if (yych == '}') goto yy202;
|
|
goto yy144;
|
|
yy197:
|
|
++YYCURSOR;
|
|
#line 310 "../src/parse/lex.re"
|
|
{
|
|
if (!s_to_u32_unsafe (tok + 1, cur - 2, yylval.extop.min))
|
|
{
|
|
fatal ("repetition lower bound overflow");
|
|
}
|
|
yylval.extop.max = std::numeric_limits<uint32_t>::max();
|
|
return TOKEN_CLOSESIZE;
|
|
}
|
|
#line 1308 "src/parse/lex.cc"
|
|
yy199:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == 'e') goto yy204;
|
|
goto yy144;
|
|
yy200:
|
|
++YYCURSOR;
|
|
#line 331 "../src/parse/lex.re"
|
|
{ lex_conf (); return TOKEN_CONF; }
|
|
#line 1317 "src/parse/lex.cc"
|
|
yy202:
|
|
++YYCURSOR;
|
|
#line 297 "../src/parse/lex.re"
|
|
{
|
|
const char * p = strchr (tok, ',');
|
|
if (!s_to_u32_unsafe (tok + 1, p, yylval.extop.min))
|
|
{
|
|
fatal ("repetition lower bound overflow");
|
|
}
|
|
if (!s_to_u32_unsafe (p + 1, cur - 1, yylval.extop.max))
|
|
{
|
|
fatal ("repetition upper bound overflow");
|
|
}
|
|
return TOKEN_CLOSESIZE;
|
|
}
|
|
#line 1333 "src/parse/lex.cc"
|
|
yy204:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '0') goto yy206;
|
|
if (yych <= '9') goto yy144;
|
|
goto yy206;
|
|
yy205:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
yy206:
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy205;
|
|
goto yy144;
|
|
} else {
|
|
if (yych <= ' ') goto yy205;
|
|
if (yych <= '0') goto yy144;
|
|
if (yych >= ':') goto yy144;
|
|
}
|
|
yy207:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '\r') {
|
|
if (yych <= '\t') {
|
|
if (yych <= 0x08) goto yy144;
|
|
} else {
|
|
if (yych <= '\n') goto yy211;
|
|
if (yych <= '\f') goto yy144;
|
|
goto yy213;
|
|
}
|
|
} else {
|
|
if (yych <= ' ') {
|
|
if (yych <= 0x1F) goto yy144;
|
|
} else {
|
|
if (yych <= '/') goto yy144;
|
|
if (yych <= '9') goto yy207;
|
|
goto yy144;
|
|
}
|
|
}
|
|
yy209:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy209;
|
|
goto yy144;
|
|
} else {
|
|
if (yych <= ' ') goto yy209;
|
|
if (yych == '"') goto yy214;
|
|
goto yy144;
|
|
}
|
|
yy211:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 376 "../src/parse/lex.re"
|
|
{
|
|
set_sourceline ();
|
|
goto scan;
|
|
}
|
|
#line 1394 "src/parse/lex.cc"
|
|
yy213:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy211;
|
|
goto yy144;
|
|
yy214:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 128) {
|
|
goto yy214;
|
|
}
|
|
if (yych <= '\n') goto yy144;
|
|
if (yych >= '#') goto yy217;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy211;
|
|
if (yych == '\r') goto yy213;
|
|
goto yy144;
|
|
yy217:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy144;
|
|
goto yy214;
|
|
}
|
|
#line 392 "../src/parse/lex.re"
|
|
|
|
|
|
flex_name:
|
|
|
|
#line 1424 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy222;
|
|
if (yych == '\r') goto yy224;
|
|
++YYCURSOR;
|
|
yy221:
|
|
#line 403 "../src/parse/lex.re"
|
|
{
|
|
YYCURSOR = tok;
|
|
goto start;
|
|
}
|
|
#line 1438 "src/parse/lex.cc"
|
|
yy222:
|
|
++YYCURSOR;
|
|
#line 397 "../src/parse/lex.re"
|
|
{
|
|
YYCURSOR = tok;
|
|
lexer_state = LEX_NORMAL;
|
|
return TOKEN_FID_END;
|
|
}
|
|
#line 1447 "src/parse/lex.cc"
|
|
yy224:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) == '\n') goto yy222;
|
|
goto yy221;
|
|
}
|
|
#line 407 "../src/parse/lex.re"
|
|
|
|
|
|
code:
|
|
|
|
#line 1458 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept = 0;
|
|
static const unsigned char yybm[] = {
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 112, 0, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
112, 96, 64, 96, 96, 96, 96, 32,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
224, 224, 224, 224, 224, 224, 224, 224,
|
|
224, 224, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 0, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
96, 96, 96, 96, 96, 96, 96, 96,
|
|
};
|
|
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '&') {
|
|
if (yych <= '\n') {
|
|
if (yych <= 0x00) goto yy227;
|
|
if (yych <= '\t') goto yy229;
|
|
goto yy231;
|
|
} else {
|
|
if (yych == '"') goto yy233;
|
|
goto yy229;
|
|
}
|
|
} else {
|
|
if (yych <= '{') {
|
|
if (yych <= '\'') goto yy234;
|
|
if (yych <= 'z') goto yy229;
|
|
goto yy235;
|
|
} else {
|
|
if (yych == '}') goto yy237;
|
|
goto yy229;
|
|
}
|
|
}
|
|
yy227:
|
|
++YYCURSOR;
|
|
#line 470 "../src/parse/lex.re"
|
|
{
|
|
if (cur == eof)
|
|
{
|
|
if (depth)
|
|
{
|
|
fatal("missing '}'");
|
|
}
|
|
return 0;
|
|
}
|
|
goto code;
|
|
}
|
|
#line 1531 "src/parse/lex.cc"
|
|
yy229:
|
|
++YYCURSOR;
|
|
yy230:
|
|
#line 484 "../src/parse/lex.re"
|
|
{
|
|
goto code;
|
|
}
|
|
#line 1539 "src/parse/lex.cc"
|
|
yy231:
|
|
yyaccept = 0;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych <= '\r') {
|
|
if (yych <= '\t') {
|
|
if (yych >= '\t') goto yy239;
|
|
} else {
|
|
if (yych <= '\n') goto yy241;
|
|
if (yych >= '\r') goto yy241;
|
|
}
|
|
} else {
|
|
if (yych <= ' ') {
|
|
if (yych >= ' ') goto yy239;
|
|
} else {
|
|
if (yych == '#') goto yy242;
|
|
}
|
|
}
|
|
yy232:
|
|
#line 451 "../src/parse/lex.re"
|
|
{
|
|
if (depth == 0)
|
|
{
|
|
tok += strspn(tok, " \t\r\n");
|
|
while (cur > tok && strchr(" \t\r\n", cur[-1]))
|
|
{
|
|
--cur;
|
|
}
|
|
yylval.code = new Code (tok, tok_len (), get_fname (), tline);
|
|
return TOKEN_CODE;
|
|
}
|
|
else if (cur == eof)
|
|
{
|
|
fatal("missing '}'");
|
|
}
|
|
pos = cur;
|
|
cline++;
|
|
goto code;
|
|
}
|
|
#line 1579 "src/parse/lex.cc"
|
|
yy233:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '\n') goto yy230;
|
|
goto yy246;
|
|
yy234:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '\n') goto yy230;
|
|
goto yy251;
|
|
yy235:
|
|
++YYCURSOR;
|
|
#line 423 "../src/parse/lex.re"
|
|
{
|
|
if (depth == 0)
|
|
{
|
|
fatal("Curly braces are not allowed after ':='");
|
|
}
|
|
else
|
|
{
|
|
++depth;
|
|
}
|
|
goto code;
|
|
}
|
|
#line 1604 "src/parse/lex.cc"
|
|
yy237:
|
|
++YYCURSOR;
|
|
#line 411 "../src/parse/lex.re"
|
|
{
|
|
if (depth == 0)
|
|
{
|
|
fatal("Curly braces are not allowed after ':='");
|
|
}
|
|
else if (--depth == 0)
|
|
{
|
|
yylval.code = new Code (tok, tok_len (), get_fname (), tline);
|
|
return TOKEN_CODE;
|
|
}
|
|
goto code;
|
|
}
|
|
#line 1620 "src/parse/lex.cc"
|
|
yy239:
|
|
yyaccept = 2;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy253;
|
|
} else {
|
|
if (yych <= ' ') goto yy253;
|
|
if (yych == '#') goto yy242;
|
|
}
|
|
yy240:
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 438 "../src/parse/lex.re"
|
|
{
|
|
if (depth == 0)
|
|
{
|
|
goto code;
|
|
}
|
|
else if (cur == eof)
|
|
{
|
|
fatal("missing '}'");
|
|
}
|
|
pos = cur;
|
|
cline++;
|
|
goto code;
|
|
}
|
|
#line 1646 "src/parse/lex.cc"
|
|
yy241:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
goto yy240;
|
|
yy242:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 16) {
|
|
goto yy242;
|
|
}
|
|
if (yych == 'l') goto yy255;
|
|
yy244:
|
|
YYCURSOR = YYMARKER;
|
|
if (yyaccept <= 1) {
|
|
if (yyaccept == 0) {
|
|
goto yy232;
|
|
} else {
|
|
goto yy230;
|
|
}
|
|
} else {
|
|
goto yy240;
|
|
}
|
|
yy245:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
yy246:
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy245;
|
|
}
|
|
if (yych <= '\n') goto yy244;
|
|
if (yych >= '#') goto yy249;
|
|
yy247:
|
|
++YYCURSOR;
|
|
#line 481 "../src/parse/lex.re"
|
|
{
|
|
goto code;
|
|
}
|
|
#line 1685 "src/parse/lex.cc"
|
|
yy249:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy244;
|
|
goto yy245;
|
|
yy250:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
yy251:
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy250;
|
|
}
|
|
if (yych <= '\n') goto yy244;
|
|
if (yych <= '\'') goto yy247;
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy244;
|
|
goto yy250;
|
|
yy253:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy253;
|
|
goto yy244;
|
|
} else {
|
|
if (yych <= ' ') goto yy253;
|
|
if (yych == '#') goto yy242;
|
|
goto yy244;
|
|
}
|
|
yy255:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'i') goto yy244;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'n') goto yy244;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'e') goto yy244;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '0') goto yy260;
|
|
if (yych <= '9') goto yy244;
|
|
goto yy260;
|
|
yy259:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
yy260:
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy259;
|
|
goto yy244;
|
|
} else {
|
|
if (yych <= ' ') goto yy259;
|
|
if (yych <= '0') goto yy244;
|
|
if (yych >= ':') goto yy244;
|
|
}
|
|
yy261:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 128) {
|
|
goto yy261;
|
|
}
|
|
if (yych <= '\f') {
|
|
if (yych <= 0x08) goto yy244;
|
|
if (yych <= '\t') goto yy263;
|
|
if (yych <= '\n') goto yy265;
|
|
goto yy244;
|
|
} else {
|
|
if (yych <= '\r') goto yy267;
|
|
if (yych != ' ') goto yy244;
|
|
}
|
|
yy263:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy263;
|
|
goto yy244;
|
|
} else {
|
|
if (yych <= ' ') goto yy263;
|
|
if (yych == '"') goto yy268;
|
|
goto yy244;
|
|
}
|
|
yy265:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 434 "../src/parse/lex.re"
|
|
{
|
|
set_sourceline ();
|
|
goto code;
|
|
}
|
|
#line 1780 "src/parse/lex.cc"
|
|
yy267:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy265;
|
|
goto yy244;
|
|
yy268:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '!') {
|
|
if (yych == '\n') goto yy244;
|
|
goto yy268;
|
|
} else {
|
|
if (yych <= '"') goto yy270;
|
|
if (yych == '\\') goto yy271;
|
|
goto yy268;
|
|
}
|
|
yy270:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy265;
|
|
if (yych == '\r') goto yy267;
|
|
goto yy244;
|
|
yy271:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy244;
|
|
goto yy268;
|
|
}
|
|
#line 487 "../src/parse/lex.re"
|
|
|
|
|
|
comment:
|
|
|
|
#line 1814 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
static const unsigned char yybm[] = {
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 160, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
160, 128, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 0, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
};
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= ')') {
|
|
if (yych == '\n') goto yy276;
|
|
} else {
|
|
if (yych <= '*') goto yy278;
|
|
if (yych == '/') goto yy279;
|
|
}
|
|
++YYCURSOR;
|
|
yy275:
|
|
#line 519 "../src/parse/lex.re"
|
|
{
|
|
if (cur == eof)
|
|
{
|
|
return 0;
|
|
}
|
|
goto comment;
|
|
}
|
|
#line 1869 "src/parse/lex.cc"
|
|
yy276:
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy280;
|
|
}
|
|
if (yych == '#') goto yy283;
|
|
yy277:
|
|
#line 510 "../src/parse/lex.re"
|
|
{
|
|
if (cur == eof)
|
|
{
|
|
return 0;
|
|
}
|
|
tok = pos = cur;
|
|
cline++;
|
|
goto comment;
|
|
}
|
|
#line 1887 "src/parse/lex.cc"
|
|
yy278:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '/') goto yy285;
|
|
goto yy275;
|
|
yy279:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '*') goto yy287;
|
|
goto yy275;
|
|
yy280:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 32) {
|
|
goto yy280;
|
|
}
|
|
if (yych == '#') goto yy283;
|
|
yy282:
|
|
YYCURSOR = YYMARKER;
|
|
goto yy277;
|
|
yy283:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 5) YYFILL(5);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy283;
|
|
goto yy282;
|
|
} else {
|
|
if (yych <= ' ') goto yy283;
|
|
if (yych == 'l') goto yy289;
|
|
goto yy282;
|
|
}
|
|
yy285:
|
|
++YYCURSOR;
|
|
#line 491 "../src/parse/lex.re"
|
|
{
|
|
if (--depth == 0)
|
|
{
|
|
goto scan;
|
|
}
|
|
else
|
|
{
|
|
goto comment;
|
|
}
|
|
}
|
|
#line 1932 "src/parse/lex.cc"
|
|
yy287:
|
|
++YYCURSOR;
|
|
#line 501 "../src/parse/lex.re"
|
|
{
|
|
++depth;
|
|
fatal("ambiguous /* found");
|
|
goto comment;
|
|
}
|
|
#line 1941 "src/parse/lex.cc"
|
|
yy289:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'i') goto yy282;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'n') goto yy282;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych != 'e') goto yy282;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '0') goto yy294;
|
|
if (yych <= '9') goto yy282;
|
|
goto yy294;
|
|
yy293:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
yy294:
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy293;
|
|
goto yy282;
|
|
} else {
|
|
if (yych <= ' ') goto yy293;
|
|
if (yych <= '0') goto yy282;
|
|
if (yych >= ':') goto yy282;
|
|
}
|
|
yy295:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy295;
|
|
}
|
|
if (yych <= '\f') {
|
|
if (yych <= 0x08) goto yy282;
|
|
if (yych <= '\t') goto yy297;
|
|
if (yych <= '\n') goto yy299;
|
|
goto yy282;
|
|
} else {
|
|
if (yych <= '\r') goto yy301;
|
|
if (yych != ' ') goto yy282;
|
|
}
|
|
yy297:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= 0x1F) {
|
|
if (yych == '\t') goto yy297;
|
|
goto yy282;
|
|
} else {
|
|
if (yych <= ' ') goto yy297;
|
|
if (yych == '"') goto yy302;
|
|
goto yy282;
|
|
}
|
|
yy299:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 506 "../src/parse/lex.re"
|
|
{
|
|
set_sourceline ();
|
|
goto comment;
|
|
}
|
|
#line 2003 "src/parse/lex.cc"
|
|
yy301:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy299;
|
|
goto yy282;
|
|
yy302:
|
|
++YYCURSOR;
|
|
if ((YYLIMIT - YYCURSOR) < 3) YYFILL(3);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 128) {
|
|
goto yy302;
|
|
}
|
|
if (yych <= '\n') goto yy282;
|
|
if (yych >= '#') goto yy305;
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych == '\n') goto yy299;
|
|
if (yych == '\r') goto yy301;
|
|
goto yy282;
|
|
yy305:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy282;
|
|
goto yy302;
|
|
}
|
|
#line 526 "../src/parse/lex.re"
|
|
|
|
|
|
nextLine:
|
|
|
|
#line 2033 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy310;
|
|
++YYCURSOR;
|
|
#line 537 "../src/parse/lex.re"
|
|
{ if(cur == eof) {
|
|
return 0;
|
|
}
|
|
goto nextLine;
|
|
}
|
|
#line 2046 "src/parse/lex.cc"
|
|
yy310:
|
|
++YYCURSOR;
|
|
#line 530 "../src/parse/lex.re"
|
|
{ if(cur == eof) {
|
|
return 0;
|
|
}
|
|
tok = pos = cur;
|
|
cline++;
|
|
goto scan;
|
|
}
|
|
#line 2057 "src/parse/lex.cc"
|
|
}
|
|
#line 542 "../src/parse/lex.re"
|
|
|
|
}
|
|
|
|
static void escape (std::string & dest, const std::string & src)
|
|
{
|
|
dest = src;
|
|
size_t l = dest.length();
|
|
for (size_t p = 0; p < l; ++p)
|
|
{
|
|
if (dest[p] == '\\')
|
|
{
|
|
dest.insert(++p, "\\");
|
|
++l;
|
|
}
|
|
}
|
|
}
|
|
|
|
RegExp *Scanner::lex_cls(bool neg)
|
|
{
|
|
Range *r = NULL, *s;
|
|
uint32_t u, l;
|
|
fst:
|
|
|
|
#line 2083 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == ']') goto yy315;
|
|
#line 566 "../src/parse/lex.re"
|
|
{ l = lex_cls_chr(); goto snd; }
|
|
#line 2091 "src/parse/lex.cc"
|
|
yy315:
|
|
++YYCURSOR;
|
|
#line 565 "../src/parse/lex.re"
|
|
{ goto end; }
|
|
#line 2096 "src/parse/lex.cc"
|
|
}
|
|
#line 567 "../src/parse/lex.re"
|
|
|
|
snd:
|
|
|
|
#line 2102 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*(YYMARKER = YYCURSOR);
|
|
if (yych == '-') goto yy320;
|
|
yy319:
|
|
#line 570 "../src/parse/lex.re"
|
|
{ u = l; goto add; }
|
|
#line 2111 "src/parse/lex.cc"
|
|
yy320:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
YYCTXMARKER = YYCURSOR;
|
|
if (yych != ']') goto yy322;
|
|
YYCURSOR = YYMARKER;
|
|
goto yy319;
|
|
yy322:
|
|
++YYCURSOR;
|
|
YYCURSOR = YYCTXMARKER;
|
|
#line 571 "../src/parse/lex.re"
|
|
{
|
|
u = lex_cls_chr();
|
|
if (l > u) {
|
|
warn.swapped_range(get_line(), l, u);
|
|
std::swap(l, u);
|
|
}
|
|
goto add;
|
|
}
|
|
#line 2130 "src/parse/lex.cc"
|
|
}
|
|
#line 579 "../src/parse/lex.re"
|
|
|
|
add:
|
|
if (!(s = opts->encoding.encodeRange(l, u))) {
|
|
fatalf ("Bad code point range: '0x%X - 0x%X'", l, u);
|
|
}
|
|
r = Range::add(r, s);
|
|
goto fst;
|
|
end:
|
|
if (neg) {
|
|
r = Range::sub(opts->encoding.fullRange(), r);
|
|
}
|
|
return cls(r);
|
|
}
|
|
|
|
uint32_t Scanner::lex_cls_chr()
|
|
{
|
|
tok = cur;
|
|
|
|
#line 2151 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept = 0;
|
|
if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy328;
|
|
if (yych == '\\') goto yy330;
|
|
++YYCURSOR;
|
|
#line 602 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>(tok[0]); }
|
|
#line 2162 "src/parse/lex.cc"
|
|
yy328:
|
|
++YYCURSOR;
|
|
#line 597 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error"); }
|
|
#line 2167 "src/parse/lex.cc"
|
|
yy330:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) <= '`') {
|
|
if (yych <= '7') {
|
|
if (yych <= ',') {
|
|
if (yych != '\n') goto yy332;
|
|
} else {
|
|
if (yych <= '-') goto yy334;
|
|
if (yych <= '/') goto yy332;
|
|
if (yych <= '3') goto yy336;
|
|
goto yy338;
|
|
}
|
|
} else {
|
|
if (yych <= 'X') {
|
|
if (yych == 'U') goto yy339;
|
|
if (yych <= 'W') goto yy332;
|
|
goto yy341;
|
|
} else {
|
|
if (yych <= '[') goto yy332;
|
|
if (yych <= '\\') goto yy342;
|
|
if (yych <= ']') goto yy344;
|
|
goto yy332;
|
|
}
|
|
}
|
|
} else {
|
|
if (yych <= 'q') {
|
|
if (yych <= 'e') {
|
|
if (yych <= 'a') goto yy346;
|
|
if (yych <= 'b') goto yy348;
|
|
goto yy332;
|
|
} else {
|
|
if (yych <= 'f') goto yy350;
|
|
if (yych == 'n') goto yy352;
|
|
goto yy332;
|
|
}
|
|
} else {
|
|
if (yych <= 'u') {
|
|
if (yych <= 'r') goto yy354;
|
|
if (yych <= 's') goto yy332;
|
|
if (yych <= 't') goto yy356;
|
|
goto yy341;
|
|
} else {
|
|
if (yych <= 'v') goto yy358;
|
|
if (yych == 'x') goto yy360;
|
|
goto yy332;
|
|
}
|
|
}
|
|
}
|
|
#line 600 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
|
|
#line 2218 "src/parse/lex.cc"
|
|
yy332:
|
|
++YYCURSOR;
|
|
#line 615 "../src/parse/lex.re"
|
|
{
|
|
warn.useless_escape(tline, tok - pos, tok[1]);
|
|
return static_cast<uint8_t>(tok[1]);
|
|
}
|
|
#line 2226 "src/parse/lex.cc"
|
|
yy334:
|
|
++YYCURSOR;
|
|
#line 613 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('-'); }
|
|
#line 2231 "src/parse/lex.cc"
|
|
yy336:
|
|
yyaccept = 0;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '/') goto yy337;
|
|
if (yych <= '7') goto yy361;
|
|
yy337:
|
|
#line 599 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
|
|
#line 2240 "src/parse/lex.cc"
|
|
yy338:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
goto yy337;
|
|
yy339:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy340;
|
|
if (yych <= '9') goto yy363;
|
|
} else {
|
|
if (yych <= 'F') goto yy363;
|
|
if (yych <= '`') goto yy340;
|
|
if (yych <= 'f') goto yy363;
|
|
}
|
|
yy340:
|
|
#line 598 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
|
|
#line 2258 "src/parse/lex.cc"
|
|
yy341:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy340;
|
|
if (yych <= '9') goto yy364;
|
|
goto yy340;
|
|
} else {
|
|
if (yych <= 'F') goto yy364;
|
|
if (yych <= '`') goto yy340;
|
|
if (yych <= 'f') goto yy364;
|
|
goto yy340;
|
|
}
|
|
yy342:
|
|
++YYCURSOR;
|
|
#line 612 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\\'); }
|
|
#line 2276 "src/parse/lex.cc"
|
|
yy344:
|
|
++YYCURSOR;
|
|
#line 614 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>(']'); }
|
|
#line 2281 "src/parse/lex.cc"
|
|
yy346:
|
|
++YYCURSOR;
|
|
#line 605 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\a'); }
|
|
#line 2286 "src/parse/lex.cc"
|
|
yy348:
|
|
++YYCURSOR;
|
|
#line 606 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\b'); }
|
|
#line 2291 "src/parse/lex.cc"
|
|
yy350:
|
|
++YYCURSOR;
|
|
#line 607 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\f'); }
|
|
#line 2296 "src/parse/lex.cc"
|
|
yy352:
|
|
++YYCURSOR;
|
|
#line 608 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\n'); }
|
|
#line 2301 "src/parse/lex.cc"
|
|
yy354:
|
|
++YYCURSOR;
|
|
#line 609 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\r'); }
|
|
#line 2306 "src/parse/lex.cc"
|
|
yy356:
|
|
++YYCURSOR;
|
|
#line 610 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\t'); }
|
|
#line 2311 "src/parse/lex.cc"
|
|
yy358:
|
|
++YYCURSOR;
|
|
#line 611 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\v'); }
|
|
#line 2316 "src/parse/lex.cc"
|
|
yy360:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy340;
|
|
if (yych <= '9') goto yy365;
|
|
goto yy340;
|
|
} else {
|
|
if (yych <= 'F') goto yy365;
|
|
if (yych <= '`') goto yy340;
|
|
if (yych <= 'f') goto yy365;
|
|
goto yy340;
|
|
}
|
|
yy361:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '7') goto yy366;
|
|
yy362:
|
|
YYCURSOR = YYMARKER;
|
|
if (yyaccept == 0) {
|
|
goto yy337;
|
|
} else {
|
|
goto yy340;
|
|
}
|
|
yy363:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy368;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy368;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy368;
|
|
goto yy362;
|
|
}
|
|
yy364:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy369;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy369;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy369;
|
|
goto yy362;
|
|
}
|
|
yy365:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy370;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy370;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy370;
|
|
goto yy362;
|
|
}
|
|
yy366:
|
|
++YYCURSOR;
|
|
#line 604 "../src/parse/lex.re"
|
|
{ return unesc_oct(tok, cur); }
|
|
#line 2381 "src/parse/lex.cc"
|
|
yy368:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy372;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy372;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy372;
|
|
goto yy362;
|
|
}
|
|
yy369:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy365;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy365;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy365;
|
|
goto yy362;
|
|
}
|
|
yy370:
|
|
++YYCURSOR;
|
|
#line 603 "../src/parse/lex.re"
|
|
{ return unesc_hex(tok, cur); }
|
|
#line 2410 "src/parse/lex.cc"
|
|
yy372:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych >= ':') goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy373;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych >= 'g') goto yy362;
|
|
}
|
|
yy373:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) <= '@') {
|
|
if (yych <= '/') goto yy362;
|
|
if (yych <= '9') goto yy364;
|
|
goto yy362;
|
|
} else {
|
|
if (yych <= 'F') goto yy364;
|
|
if (yych <= '`') goto yy362;
|
|
if (yych <= 'f') goto yy364;
|
|
goto yy362;
|
|
}
|
|
}
|
|
#line 619 "../src/parse/lex.re"
|
|
|
|
}
|
|
|
|
uint32_t Scanner::lex_str_chr(char quote, bool &end)
|
|
{
|
|
end = false;
|
|
tok = cur;
|
|
|
|
#line 2443 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
unsigned int yyaccept = 0;
|
|
if ((YYLIMIT - YYCURSOR) < 10) YYFILL(10);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy378;
|
|
if (yych == '\\') goto yy380;
|
|
++YYCURSOR;
|
|
#line 632 "../src/parse/lex.re"
|
|
{
|
|
end = tok[0] == quote;
|
|
return static_cast<uint8_t>(tok[0]);
|
|
}
|
|
#line 2457 "src/parse/lex.cc"
|
|
yy378:
|
|
++YYCURSOR;
|
|
#line 627 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error"); }
|
|
#line 2462 "src/parse/lex.cc"
|
|
yy380:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) <= 'a') {
|
|
if (yych <= 'T') {
|
|
if (yych <= '/') {
|
|
if (yych != '\n') goto yy382;
|
|
} else {
|
|
if (yych <= '3') goto yy384;
|
|
if (yych <= '7') goto yy386;
|
|
goto yy382;
|
|
}
|
|
} else {
|
|
if (yych <= 'X') {
|
|
if (yych <= 'U') goto yy387;
|
|
if (yych <= 'W') goto yy382;
|
|
goto yy389;
|
|
} else {
|
|
if (yych == '\\') goto yy390;
|
|
if (yych <= '`') goto yy382;
|
|
goto yy392;
|
|
}
|
|
}
|
|
} else {
|
|
if (yych <= 'r') {
|
|
if (yych <= 'f') {
|
|
if (yych <= 'b') goto yy394;
|
|
if (yych <= 'e') goto yy382;
|
|
goto yy396;
|
|
} else {
|
|
if (yych == 'n') goto yy398;
|
|
if (yych <= 'q') goto yy382;
|
|
goto yy400;
|
|
}
|
|
} else {
|
|
if (yych <= 'u') {
|
|
if (yych <= 's') goto yy382;
|
|
if (yych <= 't') goto yy402;
|
|
goto yy389;
|
|
} else {
|
|
if (yych <= 'v') goto yy404;
|
|
if (yych == 'x') goto yy406;
|
|
goto yy382;
|
|
}
|
|
}
|
|
}
|
|
#line 630 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in escape sequence"); }
|
|
#line 2510 "src/parse/lex.cc"
|
|
yy382:
|
|
++YYCURSOR;
|
|
#line 646 "../src/parse/lex.re"
|
|
{
|
|
if (tok[1] != quote) {
|
|
warn.useless_escape(tline, tok - pos, tok[1]);
|
|
}
|
|
return static_cast<uint8_t>(tok[1]);
|
|
}
|
|
#line 2520 "src/parse/lex.cc"
|
|
yy384:
|
|
yyaccept = 0;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '/') goto yy385;
|
|
if (yych <= '7') goto yy407;
|
|
yy385:
|
|
#line 629 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in octal escape sequence"); }
|
|
#line 2529 "src/parse/lex.cc"
|
|
yy386:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
goto yy385;
|
|
yy387:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy388;
|
|
if (yych <= '9') goto yy409;
|
|
} else {
|
|
if (yych <= 'F') goto yy409;
|
|
if (yych <= '`') goto yy388;
|
|
if (yych <= 'f') goto yy409;
|
|
}
|
|
yy388:
|
|
#line 628 "../src/parse/lex.re"
|
|
{ fatal ((tok - pos) - tchar, "syntax error in hexadecimal escape sequence"); }
|
|
#line 2547 "src/parse/lex.cc"
|
|
yy389:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy388;
|
|
if (yych <= '9') goto yy410;
|
|
goto yy388;
|
|
} else {
|
|
if (yych <= 'F') goto yy410;
|
|
if (yych <= '`') goto yy388;
|
|
if (yych <= 'f') goto yy410;
|
|
goto yy388;
|
|
}
|
|
yy390:
|
|
++YYCURSOR;
|
|
#line 645 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\\'); }
|
|
#line 2565 "src/parse/lex.cc"
|
|
yy392:
|
|
++YYCURSOR;
|
|
#line 638 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\a'); }
|
|
#line 2570 "src/parse/lex.cc"
|
|
yy394:
|
|
++YYCURSOR;
|
|
#line 639 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\b'); }
|
|
#line 2575 "src/parse/lex.cc"
|
|
yy396:
|
|
++YYCURSOR;
|
|
#line 640 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\f'); }
|
|
#line 2580 "src/parse/lex.cc"
|
|
yy398:
|
|
++YYCURSOR;
|
|
#line 641 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\n'); }
|
|
#line 2585 "src/parse/lex.cc"
|
|
yy400:
|
|
++YYCURSOR;
|
|
#line 642 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\r'); }
|
|
#line 2590 "src/parse/lex.cc"
|
|
yy402:
|
|
++YYCURSOR;
|
|
#line 643 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\t'); }
|
|
#line 2595 "src/parse/lex.cc"
|
|
yy404:
|
|
++YYCURSOR;
|
|
#line 644 "../src/parse/lex.re"
|
|
{ return static_cast<uint8_t>('\v'); }
|
|
#line 2600 "src/parse/lex.cc"
|
|
yy406:
|
|
yyaccept = 1;
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy388;
|
|
if (yych <= '9') goto yy411;
|
|
goto yy388;
|
|
} else {
|
|
if (yych <= 'F') goto yy411;
|
|
if (yych <= '`') goto yy388;
|
|
if (yych <= 'f') goto yy411;
|
|
goto yy388;
|
|
}
|
|
yy407:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '7') goto yy412;
|
|
yy408:
|
|
YYCURSOR = YYMARKER;
|
|
if (yyaccept == 0) {
|
|
goto yy385;
|
|
} else {
|
|
goto yy388;
|
|
}
|
|
yy409:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy414;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy414;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy414;
|
|
goto yy408;
|
|
}
|
|
yy410:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy415;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy415;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy415;
|
|
goto yy408;
|
|
}
|
|
yy411:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy416;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy416;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy416;
|
|
goto yy408;
|
|
}
|
|
yy412:
|
|
++YYCURSOR;
|
|
#line 637 "../src/parse/lex.re"
|
|
{ return unesc_oct(tok, cur); }
|
|
#line 2665 "src/parse/lex.cc"
|
|
yy414:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy418;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy418;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy418;
|
|
goto yy408;
|
|
}
|
|
yy415:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy411;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy411;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy411;
|
|
goto yy408;
|
|
}
|
|
yy416:
|
|
++YYCURSOR;
|
|
#line 636 "../src/parse/lex.re"
|
|
{ return unesc_hex(tok, cur); }
|
|
#line 2694 "src/parse/lex.cc"
|
|
yy418:
|
|
yych = (YYCTYPE)*++YYCURSOR;
|
|
if (yych <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych >= ':') goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy419;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych >= 'g') goto yy408;
|
|
}
|
|
yy419:
|
|
++YYCURSOR;
|
|
if ((yych = (YYCTYPE)*YYCURSOR) <= '@') {
|
|
if (yych <= '/') goto yy408;
|
|
if (yych <= '9') goto yy410;
|
|
goto yy408;
|
|
} else {
|
|
if (yych <= 'F') goto yy410;
|
|
if (yych <= '`') goto yy408;
|
|
if (yych <= 'f') goto yy410;
|
|
goto yy408;
|
|
}
|
|
}
|
|
#line 652 "../src/parse/lex.re"
|
|
|
|
}
|
|
|
|
RegExp *Scanner::lex_str(char quote, bool casing)
|
|
{
|
|
RegExp *r = NULL;
|
|
for (bool end;;) {
|
|
const uint32_t c = lex_str_chr(quote, end);
|
|
if (end) {
|
|
return r ? r : new NullOp;
|
|
}
|
|
r = doCat(r, casing ? ichr(c) : schr(c));
|
|
}
|
|
}
|
|
|
|
void Scanner::set_sourceline ()
|
|
{
|
|
sourceline:
|
|
tok = cur;
|
|
|
|
#line 2739 "src/parse/lex.cc"
|
|
{
|
|
YYCTYPE yych;
|
|
static const unsigned char yybm[] = {
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 0, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
192, 192, 192, 192, 192, 192, 192, 192,
|
|
192, 192, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 0, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
128, 128, 128, 128, 128, 128, 128, 128,
|
|
};
|
|
if ((YYLIMIT - YYCURSOR) < 2) YYFILL(2);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych <= '!') {
|
|
if (yych == '\n') goto yy424;
|
|
} else {
|
|
if (yych <= '"') goto yy426;
|
|
if (yych <= '0') goto yy422;
|
|
if (yych <= '9') goto yy427;
|
|
}
|
|
yy422:
|
|
++YYCURSOR;
|
|
yy423:
|
|
#line 695 "../src/parse/lex.re"
|
|
{
|
|
goto sourceline;
|
|
}
|
|
#line 2792 "src/parse/lex.cc"
|
|
yy424:
|
|
++YYCURSOR;
|
|
#line 683 "../src/parse/lex.re"
|
|
{
|
|
if (cur == eof)
|
|
{
|
|
--cur;
|
|
}
|
|
else
|
|
{
|
|
pos = cur;
|
|
}
|
|
tok = cur;
|
|
return;
|
|
}
|
|
#line 2808 "src/parse/lex.cc"
|
|
yy426:
|
|
yych = (YYCTYPE)*(YYMARKER = ++YYCURSOR);
|
|
if (yych == '\n') goto yy423;
|
|
goto yy431;
|
|
yy427:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yybm[0+yych] & 64) {
|
|
goto yy427;
|
|
}
|
|
#line 672 "../src/parse/lex.re"
|
|
{
|
|
if (!s_to_u32_unsafe (tok, cur, cline))
|
|
{
|
|
fatal ("line number overflow");
|
|
}
|
|
goto sourceline;
|
|
}
|
|
#line 2828 "src/parse/lex.cc"
|
|
yy430:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
yy431:
|
|
if (yybm[0+yych] & 128) {
|
|
goto yy430;
|
|
}
|
|
if (yych <= '\n') goto yy432;
|
|
if (yych <= '"') goto yy433;
|
|
goto yy435;
|
|
yy432:
|
|
YYCURSOR = YYMARKER;
|
|
goto yy423;
|
|
yy433:
|
|
++YYCURSOR;
|
|
#line 679 "../src/parse/lex.re"
|
|
{
|
|
escape (in.file_name, std::string (tok + 1, tok_len () - 2)); // -2 to omit quotes
|
|
goto sourceline;
|
|
}
|
|
#line 2850 "src/parse/lex.cc"
|
|
yy435:
|
|
++YYCURSOR;
|
|
if (YYLIMIT <= YYCURSOR) YYFILL(1);
|
|
yych = (YYCTYPE)*YYCURSOR;
|
|
if (yych == '\n') goto yy432;
|
|
goto yy430;
|
|
}
|
|
#line 698 "../src/parse/lex.re"
|
|
|
|
}
|
|
|
|
} // end namespace re2c
|