From f64a4633f7da195a7ca139cf8e56e82be3859d5d Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 18:51:31 -0500 Subject: [PATCH 1/6] tweaked the lexer to always have DEBUG of 0 and updated .tok file logic in runner --- Makefile | 11 +- Makefile.save | 43 + flex.h | 477 +++++++++ flex.o | Bin 0 -> 34384 bytes lex.yy.c | 2041 +++++++++++++++++++++++++++++++++++++ lexicalStructure.lex | 4 +- runner | Bin 0 -> 31688 bytes runner.c | 31 +- runner.o | Bin 0 -> 4216 bytes test_comments.tok | 9 + test_generalTokenTest.tok | 61 ++ test_keywords.tok | 29 + test_operators.tok | 22 + test_otherpunc.tok | 7 + test_simpleIntTest.tok | 3 + test_simpleLiterals.tok | 62 ++ 16 files changed, 2783 insertions(+), 17 deletions(-) create mode 100644 Makefile.save create mode 100644 flex.h create mode 100644 flex.o create mode 100644 lex.yy.c create mode 100755 runner create mode 100644 runner.o create mode 100644 test_comments.tok create mode 100644 test_generalTokenTest.tok create mode 100644 test_keywords.tok create mode 100644 test_operators.tok create mode 100644 test_otherpunc.tok create mode 100644 test_simpleIntTest.tok create mode 100644 test_simpleLiterals.tok diff --git a/Makefile b/Makefile index ff000b2..1c78b93 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ CC := gcc FLEX := flex LEX := lexicalStructure.lex -EXE := lexicalStructure +EXE := runner CFLAGS := -std=c99 -Wall CPPFLAGS := @@ -25,9 +25,16 @@ test: ./$(EXE) ./tests/test_otherpunc.alpha ./$(EXE) ./tests/test_simpleIntTest.alpha ./$(EXE) ./tests/test_simpleLiterals.alpha - + ./$(EXE) -tok ./tests/test_comments.alpha + ./$(EXE) -tok ./tests/test_generalTokenTest.alpha + ./$(EXE) -tok ./tests/test_keywords.alpha + ./$(EXE) -tok ./tests/test_operators.alpha + ./$(EXE) -tok ./tests/test_otherpunc.alpha + ./$(EXE) -tok ./tests/test_simpleIntTest.alpha + ./$(EXE) -tok ./tests/test_simpleLiterals.alpha clean: rm -f *.o rm -f lex.yy.c rm -f $(EXE) rm -f flex.h + rm -f *.tok diff --git a/Makefile.save b/Makefile.save new file mode 100644 index 0000000..668af54 --- /dev/null +++ b/Makefile.save @@ -0,0 +1,43 @@ +CC := gcc +FLEX := flex +LEX := lexicalStructure.lex +EXE := runner +CFLAGS := -std=c99 -Wall +CPPFLAGS := + +runner: flex.o runner.o + $(CC) -o runner runner.o flex.o + +debug: CFLAGS += -DDEBUG=true +debug: clean runner + +runner.o: runner.c runner.h flex.h + $(CC) $(CFLAGS) -o runner.o -c runner.c + +flex.o: lex.yy.c typedefs.h + $(CC) $(CFLAGS) -o flex.o -c lex.yy.c + +lex.yy.c: lexicalStructure.lex + $(FLEX) -o lex.yy.c $(LEX) + +test: + ./$(EXE) ./tests/test_comments.alpha + ./$(EXE) ./tests/test_generalTokenTest.alpha + ./$(EXE) ./tests/test_keywords.alpha + ./$(EXE) ./tests/test_operators.alpha + ./$(EXE) ./tests/test_otherpunc.alpha + ./$(EXE) ./tests/test_simpleIntTest.alpha + ./$(EXE) ./tests/test_simpleLiterals.alpha + ./$(EXE) -tok ./tests/test_comments.alpha + ./$(EXE) -tok ./tests/test_generalTokenTest.alpha + ./$(EXE) -tok ./tests/test_keywords.alpha + ./$(EXE) -tok ./tests/test_operators.alpha + ./$(EXE) -tok ./tests/test_otherpunc.alpha + ./$(EXE) -tok ./tests/test_simpleIntTest.alpha + ./$(EXE) -tok ./tests/test_simpleLiterals.alpha +clean: + rm -f *.o + rm -f lex.yy.c + rm -f $(EXE) + rm -f flex.h + rm -f *.tok diff --git a/flex.h b/flex.h new file mode 100644 index 0000000..c017827 --- /dev/null +++ b/flex.h @@ -0,0 +1,477 @@ +#ifndef yyHEADER_H +#define yyHEADER_H 1 +#define yyIN_HEADER 1 + +#line 6 "flex.h" + +#line 8 "flex.h" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP + +extern int yylineno; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +#ifdef YY_HEADER_EXPORT_START_CONDITIONS +#define INITIAL 0 + +#endif + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +#undef YY_NEW_FILE +#undef YY_FLUSH_BUFFER +#undef yy_set_bol +#undef yy_new_buffer +#undef yy_set_interactive +#undef YY_DO_BEFORE_ACTION + +#ifdef YY_DECL_IS_OURS +#undef YY_DECL_IS_OURS +#undef YY_DECL +#endif + +#ifndef yy_create_buffer_ALREADY_DEFINED +#undef yy_create_buffer +#endif +#ifndef yy_delete_buffer_ALREADY_DEFINED +#undef yy_delete_buffer +#endif +#ifndef yy_scan_buffer_ALREADY_DEFINED +#undef yy_scan_buffer +#endif +#ifndef yy_scan_string_ALREADY_DEFINED +#undef yy_scan_string +#endif +#ifndef yy_scan_bytes_ALREADY_DEFINED +#undef yy_scan_bytes +#endif +#ifndef yy_init_buffer_ALREADY_DEFINED +#undef yy_init_buffer +#endif +#ifndef yy_flush_buffer_ALREADY_DEFINED +#undef yy_flush_buffer +#endif +#ifndef yy_load_buffer_state_ALREADY_DEFINED +#undef yy_load_buffer_state +#endif +#ifndef yy_switch_to_buffer_ALREADY_DEFINED +#undef yy_switch_to_buffer +#endif +#ifndef yypush_buffer_state_ALREADY_DEFINED +#undef yypush_buffer_state +#endif +#ifndef yypop_buffer_state_ALREADY_DEFINED +#undef yypop_buffer_state +#endif +#ifndef yyensure_buffer_stack_ALREADY_DEFINED +#undef yyensure_buffer_stack +#endif +#ifndef yylex_ALREADY_DEFINED +#undef yylex +#endif +#ifndef yyrestart_ALREADY_DEFINED +#undef yyrestart +#endif +#ifndef yylex_init_ALREADY_DEFINED +#undef yylex_init +#endif +#ifndef yylex_init_extra_ALREADY_DEFINED +#undef yylex_init_extra +#endif +#ifndef yylex_destroy_ALREADY_DEFINED +#undef yylex_destroy +#endif +#ifndef yyget_debug_ALREADY_DEFINED +#undef yyget_debug +#endif +#ifndef yyset_debug_ALREADY_DEFINED +#undef yyset_debug +#endif +#ifndef yyget_extra_ALREADY_DEFINED +#undef yyget_extra +#endif +#ifndef yyset_extra_ALREADY_DEFINED +#undef yyset_extra +#endif +#ifndef yyget_in_ALREADY_DEFINED +#undef yyget_in +#endif +#ifndef yyset_in_ALREADY_DEFINED +#undef yyset_in +#endif +#ifndef yyget_out_ALREADY_DEFINED +#undef yyget_out +#endif +#ifndef yyset_out_ALREADY_DEFINED +#undef yyset_out +#endif +#ifndef yyget_leng_ALREADY_DEFINED +#undef yyget_leng +#endif +#ifndef yyget_text_ALREADY_DEFINED +#undef yyget_text +#endif +#ifndef yyget_lineno_ALREADY_DEFINED +#undef yyget_lineno +#endif +#ifndef yyset_lineno_ALREADY_DEFINED +#undef yyset_lineno +#endif +#ifndef yyget_column_ALREADY_DEFINED +#undef yyget_column +#endif +#ifndef yyset_column_ALREADY_DEFINED +#undef yyset_column +#endif +#ifndef yywrap_ALREADY_DEFINED +#undef yywrap +#endif +#ifndef yyget_lval_ALREADY_DEFINED +#undef yyget_lval +#endif +#ifndef yyset_lval_ALREADY_DEFINED +#undef yyset_lval +#endif +#ifndef yyget_lloc_ALREADY_DEFINED +#undef yyget_lloc +#endif +#ifndef yyset_lloc_ALREADY_DEFINED +#undef yyset_lloc +#endif +#ifndef yyalloc_ALREADY_DEFINED +#undef yyalloc +#endif +#ifndef yyrealloc_ALREADY_DEFINED +#undef yyrealloc +#endif +#ifndef yyfree_ALREADY_DEFINED +#undef yyfree +#endif +#ifndef yytext_ALREADY_DEFINED +#undef yytext +#endif +#ifndef yyleng_ALREADY_DEFINED +#undef yyleng +#endif +#ifndef yyin_ALREADY_DEFINED +#undef yyin +#endif +#ifndef yyout_ALREADY_DEFINED +#undef yyout +#endif +#ifndef yy_flex_debug_ALREADY_DEFINED +#undef yy_flex_debug +#endif +#ifndef yylineno_ALREADY_DEFINED +#undef yylineno +#endif +#ifndef yytables_fload_ALREADY_DEFINED +#undef yytables_fload +#endif +#ifndef yytables_destroy_ALREADY_DEFINED +#undef yytables_destroy +#endif +#ifndef yyTABLES_NAME_ALREADY_DEFINED +#undef yyTABLES_NAME +#endif + +#line 74 "lexicalStructure.lex" + + +#line 476 "flex.h" +#undef yyIN_HEADER +#endif /* yyHEADER_H */ diff --git a/flex.o b/flex.o new file mode 100644 index 0000000000000000000000000000000000000000..f8acaf4d65edcb38fda1c8c1d0b8b8eb3e684a64 GIT binary patch literal 34384 zcmd6w3w%}8mH&4hKtLn`(V&2ar$j>pMFl|(kOP+zAcn*z8uGX?(L88!FA{5f5KwL- zmbN}?b!6&P)J~^kt#w*Q0y-u>{)kimQ)_997Ta9I%*4XfSgHB1wa;4TuDdwrGW~p} zpZRY-_nvdUd#&Hzd+mMp+2`cm%N z`KO9d?4z}z&cpM&hGEXu?(D74!M4X9p&0Y%s00hSFtoKhI)?XS)`O2yL1l*3)P6Vi|o?CMG;$&cW;# zNZvWPEhp6F91O*rKDWv-2g*SUll?+>=;6?IYnlB*X3jR}?Jmd!G~R@^+s0)7I5WL& zYjg6mVC^ehm2S(0f;=FieH0Z8Zs=U6FA**X z^)?zB&cWBPpS%!4Nd?*WUx)(Ya9G4C0UUfBP_2TCY4Gm?# zU^BLKM`lqIe)2lVhGMT#r^2{-5zDcIC;rk&#=M9I@gKvUkMkQTobNzqG>G5o@BC&8 z=OyTj2JuV%o!?5~JPe)DAa4AfzYeEvP@8*4fioJ!Ux7WJHh&|9a~C?JLHuri=WnKP zUX9LZ5MSZ%e18h(vFMBj@zMUy52SE@cO*EYLHupl^J(*gDV!fdXEca^!{7O#6wcS8 zGaAGz{GA_8;XE0g(I7s--}#Xg&Ihx=84cpUggu`&*QEy!lJB518pI#>cMhj;u0v-u zh*$YLUz5T)ADz)4KHcB>+7!-*M}RXL#D5QaK5f1(h4Vk4GaAI7@poRA!nqZl(IDRB z?|gj<=L^vp4dQeBoo`6tJUASj(I9>V_I%o0nZo&}=!^#O7yO;qr*OUgZS6|ooAeFh=z98AyNvW0fO_Dk4-JDAHl2h*~*?t=rj7h%V{`*LeWoeja?yXWJx()PbI z*x6kGcLVXOKscZ=zk*2^Z#F0duoh43_Qmi2gXhRNaifO?K}Na3pPm zF53|wW=pw#@by>Z-E1hRLqlCfSs@r-Tq9d&|GrP^T1CSQ#AhCb_hE$u3r z2V?YH<}{G<;SOyuEjsE&99{9R;lvInf_q6h&eWa}y*@ zQ?`d-e-)fE-}4Kd-rIg26azSIV30)T$f4jL0=KrY(n;}|FcSsqO*q%- zwY7XHJ|0>WWC%6x^YU;v1bwkTl;0b3-h!6&brt2oSZ#H8C!}@5*y`-qZ|<03NoWFP zY%d)Fk10ZX_Y7uiAD@OWRyv`7Ea$@QyNd{PcBhAG@U9;U#LoXWo`xWhaND{htADi3 z>?wlN5i3uI&~37lPd|n8;GBp0inH2l6Z9h(iM~$+rnBQElYQTZaN~U!?B&7Zfe}59 z-3j)d4$a(h5F~q??sM$sRd_f37X`W4A?x&pYI?hzSFwh@F!gj*bmO>q6~@J@3!Rrb z&g20`vvJJn?(FCuiVTPMQPC&u`~2V%LeP3BVF1*&m!`!kY&io^lv@rcMW?C~pi^Ze z-yVxM{I9z6PW)MDQ6Dy|2j5Kph4!Ee=CRBquSdX3*r_6@zFp2s(Cn@YQ7J^vj`n;2 zPnSLkb&U*leL1UZ71aIp(Dp@RLa}#3vAr+j320^IGzeXvs|vseW7Y6{At*53sp3wC zps=j7qt`?y^f>k;S91O50moB5NDr<&nB5Pf#9k>~eF#0yLiA8f47Xl*de&7mVZq+) z`|$Cduy*V7&S2Vpn9cDy3!V%90`~my58mnWyooK%3aYl1P-o6>vV)u1Rq<};$LVnX zCTi?GYV)6ylBVUf{jUXUCt2DFJhe4W4mPA+&WoWgc}a0&7;}z#z32?aKexT-48j90 zc-nM&sLSr^$BO;KZ1-<-j&y;$e!fRf7mvE-q6Ad|pDrG64v*)K-qmq*Gn8zfE*?Qa z8z%P&rf(VUlfonZPZy8k)5YTpO5uZ1=yV2Q-gSrH0%-Q;qcE?5&h_3!IM#8P4PwsV zYt9jveGUgT|FCcKk2ilo9Gx9UO>`LO zKwm@8m_!udx%!+~$AM5RDi%q7iM4GXKAsL5<}e)b(zU?p%kEqT)07);Kr!b~uvaOZ zn*L`uOb^fjD2dBaXCReE7Zl-M;GDt!+)!r|^mk{|0A6fiyhEj(ffH06hQ%#CXa`S& z2T=>Js^SO&;@@znCJ%=I1B+o%5~N_~APQa5I_*k$RtnANgRyuZ2Ggix;|~j1E)YU3 zo>s%+zz*>piM1tkC^X(u>O~9#9m6z`z4d!`R`9QR(u5>elN(_LVntv!>u;icZeBi2 z+=I*#w*-Bo|7&On)^U*>c)J5`gd&q+Nf{a2Kbvjo`fkT$|CJ<%Q;b-;>>y+J4`@VpFfyT;N-F9ZIW3cZiRQNBEUI-__mS=27drkdvP<^1O zk#bTOVXxI9)0!^+>p#R0<~2Q^$m()-|&EB=PppC-p}kno9bmy2?|Q^jpKpE&+i z#lPsWg|+ua&W@xxG7pDMEP7~n5!Bi)#zHvcJ39tV(h~eZxOv6~c2yjL6@%R?nt&(z z!(vGf&0hj@Af7TXgQ}%SIVtoM<>A854iXzNJ5V09$PxFFJVb0=A{+n0K@ts^qTH3P zTYtRcfxf2d(kW|?X+OE|IuF}m!4>5ot&{CJ3zKWY70y7oL&S#~PG3*aJh!3VKt17! zv(V{_oaXu#xV|Ve2Vw)0XU9PknFg7lFaC^1WpC}ieT03`(?9Gd)*LDjE1m9EwBlGS zM~=eI!?4`yaC

ODBcCr)Uy++WxcC5XA! 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 literal 0 HcmV?d00001 diff --git a/lex.yy.c b/lex.yy.c new file mode 100644 index 0000000..69aedb9 --- /dev/null +++ b/lex.yy.c @@ -0,0 +1,2041 @@ +#line 2 "lex.yy.c" + +#line 4 "lex.yy.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 42 +#define YY_END_OF_BUFFER 43 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[131] = + { 0, + 0, 0, 43, 41, 40, 24, 41, 20, 25, 41, + 41, 18, 16, 30, 17, 27, 19, 32, 29, 28, + 21, 22, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 26, 0, 34, 0, 0, 0, 0, + 31, 32, 23, 39, 39, 39, 13, 39, 39, 39, + 39, 39, 6, 39, 39, 39, 39, 39, 39, 39, + 33, 0, 0, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, + 0, 39, 39, 39, 8, 39, 39, 39, 39, 38, + 39, 39, 39, 7, 36, 9, 39, 39, 39, 39, + + 39, 37, 39, 39, 39, 39, 39, 5, 39, 39, + 39, 39, 39, 39, 39, 39, 11, 3, 2, 39, + 39, 39, 1, 14, 15, 39, 12, 10, 4, 0 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 5, 1, 1, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, + 21, 22, 1, 1, 23, 24, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 1, 25, 1, 1, 23, 1, 26, 23, 27, 28, + + 29, 30, 31, 32, 33, 23, 23, 34, 23, 35, + 36, 37, 23, 38, 39, 40, 41, 42, 43, 44, + 45, 23, 1, 46, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static const YY_CHAR yy_meta[47] = + { 0, + 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, + 1, 1, 4, 4, 1, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1 + } ; + +static const flex_int16_t yy_base[135] = + { 0, + 0, 0, 160, 161, 161, 161, 42, 161, 161, 134, + 147, 161, 161, 161, 135, 161, 161, 139, 134, 161, + 161, 161, 0, 118, 20, 121, 16, 23, 21, 111, + 122, 20, 118, 161, 48, 161, 49, 141, 47, 137, + 161, 130, 161, 0, 110, 117, 0, 118, 104, 102, + 107, 105, 0, 99, 104, 23, 108, 95, 98, 101, + 161, 122, 58, 98, 93, 92, 100, 99, 88, 99, + 96, 90, 94, 93, 80, 85, 90, 89, 83, 161, + 60, 87, 86, 88, 0, 75, 83, 71, 79, 0, + 83, 70, 69, 0, 0, 0, 77, 79, 65, 76, + + 67, 0, 63, 66, 53, 46, 51, 0, 50, 44, + 41, 54, 43, 40, 48, 47, 0, 0, 0, 46, + 40, 37, 0, 0, 0, 28, 0, 0, 0, 161, + 89, 93, 57, 97 + } ; + +static const flex_int16_t yy_def[135] = + { 0, + 130, 1, 130, 130, 130, 130, 131, 130, 130, 132, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 130, 131, 130, 130, 130, 130, 134, + 130, 130, 130, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 130, 134, 134, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 130, + 134, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 0, + 130, 130, 130, 130 + } ; + +static const flex_int16_t yy_nxt[208] = + { 0, + 4, 4, 5, 6, 7, 8, 9, 10, 11, 4, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 4, 23, 24, 4, 25, 26, 23, 27, 28, + 23, 23, 29, 23, 30, 23, 23, 31, 23, 32, + 23, 23, 33, 23, 23, 34, 36, 46, 51, 49, + 53, 57, 36, 35, 38, 54, 73, 58, 47, 50, + 44, 74, 75, 52, 59, 129, 37, 80, 81, 130, + 81, 128, 37, 127, 126, 125, 124, 123, 122, 121, + 120, 38, 119, 35, 118, 117, 38, 116, 35, 35, + 35, 115, 35, 38, 114, 113, 38, 62, 62, 62, + + 62, 112, 111, 110, 109, 108, 107, 106, 105, 104, + 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, + 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, + 83, 82, 63, 79, 78, 77, 76, 72, 71, 70, + 69, 68, 67, 66, 65, 64, 42, 63, 61, 60, + 56, 55, 48, 45, 43, 42, 41, 40, 39, 130, + 3, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + + 130, 130, 130, 130, 130, 130, 130 + } ; + +static const flex_int16_t yy_chk[208] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 7, 25, 28, 27, + 29, 32, 35, 37, 39, 29, 56, 32, 25, 27, + 133, 56, 56, 28, 32, 126, 7, 63, 63, 81, + 81, 122, 35, 121, 120, 116, 115, 114, 113, 112, + 111, 39, 110, 37, 109, 107, 39, 106, 37, 131, + 131, 105, 131, 132, 104, 103, 132, 134, 134, 134, + + 134, 101, 100, 99, 98, 97, 93, 92, 91, 89, + 88, 87, 86, 84, 83, 82, 79, 78, 77, 76, + 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, + 65, 64, 62, 60, 59, 58, 57, 55, 54, 52, + 51, 50, 49, 48, 46, 45, 42, 40, 38, 33, + 31, 30, 26, 24, 19, 18, 15, 11, 10, 3, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + + 130, 130, 130, 130, 130, 130, 130 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "lexicalStructure.lex" +/* Lexical Analysis with Flex (1.6.0) We used some of the code from this manual */ +/* so we placed the citation here. */ +/* definitions */ +#line 8 "lexicalStructure.lex" + #include + #include "typedefs.h" + int line_number = 1, column_number = 1; + bool DEBUG = false; +#line 542 "lex.yy.c" +#line 19 "lexicalStructure.lex" + /* char can be a newline, tab, an escaped quote, or anything but a single quote, an actual line break, an actual tab, or a backslash by itself (to prevent confusion from escaped quote */ + /* similar to above, a string Char (SCHAR) is the same as a CHAR except we cannot have double quotes instead of single quotes. Double quotes need to be escaped in Flex unlike single quotes based on documentation */ +#line 546 "lex.yy.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { +#line 23 "lexicalStructure.lex" + + +#line 766 "lex.yy.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 161 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 25 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 26 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_ADDRESS: %s (%d)\n", yytext, T_ADDRESS);} else {return T_ADDRESS;}} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 27 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_BOOLEAN: %s (%d)\n", yytext, T_BOOLEAN);} else {return T_BOOLEAN;}} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 28 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_CHARACTER: %s (%d)\n", yytext, T_CHARACTER);} else {return T_CHARACTER;}} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 30 "lexicalStructure.lex" +{if(DEBUG) {printf( "WHILE: %s (%d)\n", yytext, WHILE);} else {return WHILE;}} + YY_BREAK +case 6: +YY_RULE_SETUP +#line 31 "lexicalStructure.lex" +{if(DEBUG) {printf( "IF: %s (%d)\n", yytext, IF);} else {return IF;}} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 32 "lexicalStructure.lex" +{if(DEBUG) {printf( "THEN: %s (%d)\n", yytext, THEN);} else {return THEN;}} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 33 "lexicalStructure.lex" +{if(DEBUG) {printf( "ELSE: %s (%d)\n", yytext, ELSE);} else {return ELSE;}} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 34 "lexicalStructure.lex" +{if(DEBUG) {printf( "TYPE: %s (%d)\n", yytext, TYPE);} else {return TYPE;}} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 35 "lexicalStructure.lex" +{if(DEBUG) {printf( "FUNCTION: %s (%d)\n", yytext, FUNCTION);} else {return FUNCTION;}} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 36 "lexicalStructure.lex" +{if(DEBUG) {printf( "RETURN: %s (%d)\n", yytext, RETURN);} else {return RETURN;}} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 37 "lexicalStructure.lex" +{if(DEBUG) {printf( "EXTERNAL: %s (%d)\n", yytext, EXTERNAL);} else {return EXTERNAL;}} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 38 "lexicalStructure.lex" +{if(DEBUG) {printf( "AS: %s (%d)\n", yytext, AS);} else {return AS;}} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 40 "lexicalStructure.lex" +{if(DEBUG) {printf( "RELEASE: %s (%d)\n", yytext, RELEASE);} else {return RELEASE;}} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 41 "lexicalStructure.lex" +{if(DEBUG) {printf( "RESERVE: %s (%d)\n", yytext, RESERVE);} else {return RESERVE;}} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 43 "lexicalStructure.lex" +{if(DEBUG) {printf( "ADD: %s (%d)\n", yytext, ADD);} else {return ADD;}} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 44 "lexicalStructure.lex" +{if(DEBUG) {printf( "SUB_OR_NEG: %s (%d)\n", yytext, SUB_OR_NEG);} else {return SUB_OR_NEG;}} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 45 "lexicalStructure.lex" +{if(DEBUG) {printf( "MUL: %s (%d)\n", yytext, MUL);} else {return MUL;}} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 46 "lexicalStructure.lex" +{if(DEBUG) {printf( "DIV: %s (%d)\n", yytext, DIV);} else {return DIV;}} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 47 "lexicalStructure.lex" +{if(DEBUG) {printf( "REM: %s (%d)\n", yytext, REM);} else {return REM;}} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 48 "lexicalStructure.lex" +{if(DEBUG) {printf( "LESS_THAN: %s (%d)\n", yytext, LESS_THAN);} else {return LESS_THAN;}} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 49 "lexicalStructure.lex" +{if(DEBUG) {printf( "EQUAL_TO: %s (%d)\n", yytext, EQUAL_TO);} else {return EQUAL_TO;}} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 50 "lexicalStructure.lex" +{if(DEBUG) {printf( "ASSIGN: %s (%d)\n", yytext, ASSIGN);} else {return ASSIGN;}} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 51 "lexicalStructure.lex" +{if(DEBUG) {printf( "NOT: %s (%d)\n", yytext, NOT);} else {return NOT;}} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 52 "lexicalStructure.lex" +{if(DEBUG) {printf( "AND: %s (%d)\n", yytext, AND);} else {return AND;}} + YY_BREAK +case 26: +YY_RULE_SETUP +#line 53 "lexicalStructure.lex" +{if(DEBUG) {printf( "OR: %s (%d)\n", yytext, OR);} else {return OR;}} + YY_BREAK +case 27: +YY_RULE_SETUP +#line 54 "lexicalStructure.lex" +{if(DEBUG) {printf( "DOT: %s (%d)\n", yytext, DOT);} else {return DOT;}} + YY_BREAK +case 28: +YY_RULE_SETUP +#line 56 "lexicalStructure.lex" +{if(DEBUG) {printf( "SEMI_COLON: %s (%d)\n", yytext, SEMI_COLON);} else {return SEMI_COLON;}} + YY_BREAK +case 29: +YY_RULE_SETUP +#line 57 "lexicalStructure.lex" +{if(DEBUG) {printf( "COLON: %s (%d)\n", yytext, COLON);} else {return COLON;}} + YY_BREAK +case 30: +YY_RULE_SETUP +#line 58 "lexicalStructure.lex" +{if(DEBUG) {printf( "COMMA: %s (%d)\n", yytext, COMMA);} else {return COMMA;}} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 59 "lexicalStructure.lex" +{if(DEBUG) {printf( "ARROW: %s (%d)\n", yytext, ARROW);} else {return ARROW;}} + YY_BREAK +case 32: +YY_RULE_SETUP +#line 61 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_INTEGER: %s (%d)\n", yytext, C_INTEGER);} else {return C_INTEGER;}} + YY_BREAK +case 33: +YY_RULE_SETUP +#line 62 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_CHARACTER: %s (%d)\n", yytext, C_CHARACTER);} else {return C_CHARACTER;}} + YY_BREAK +case 34: +YY_RULE_SETUP +#line 63 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_STRING: %s (%d)\n", yytext, C_STRING);} else {return C_STRING;}} + YY_BREAK +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +#line 64 "lexicalStructure.lex" +{if(DEBUG) {printf( "COMMENT: %s (%d)\n", yytext, COMMENT);} else {return COMMENT;}} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 65 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_TRUE: %s (%d)\n", yytext, C_TRUE);} else {return C_TRUE;}} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 66 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_FALSE: %s (%d)\n", yytext, C_FALSE);} else {return C_FALSE;}} + YY_BREAK +case 38: +YY_RULE_SETUP +#line 67 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_NULL: %s (%d)\n", yytext, C_NULL);} else {return C_NULL;}} + YY_BREAK +case 39: +YY_RULE_SETUP +#line 69 "lexicalStructure.lex" +{if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {return ID;}} + YY_BREAK +case 40: +/* rule 40 can match eol */ +YY_RULE_SETUP +#line 71 "lexicalStructure.lex" +{line_number++; column_number = 1;} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 72 "lexicalStructure.lex" +{column_number++;} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 74 "lexicalStructure.lex" +ECHO; + YY_BREAK +#line 1035 "lex.yy.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); + + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 130); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 74 "lexicalStructure.lex" + + diff --git a/lexicalStructure.lex b/lexicalStructure.lex index eed6e7d..a79ebfd 100644 --- a/lexicalStructure.lex +++ b/lexicalStructure.lex @@ -8,7 +8,7 @@ #include #include "typedefs.h" int line_number = 1, column_number = 1; - bool DEBUG = true; + bool DEBUG = false; %} COM ([^*]|\*+[^)*])* @@ -70,4 +70,4 @@ SCHAR \\n|\\t|\\\"|[^\"\n\\] \n {line_number++; column_number = 1;} . {column_number++;} -%% \ No newline at end of file +%% diff --git a/runner b/runner new file mode 100755 index 0000000000000000000000000000000000000000..620f79ca8f59f14b034d2ad92795a58beb68cd82 GIT binary patch literal 31688 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 CgEuw+ literal 0 HcmV?d00001 diff --git a/test_comments.tok b/test_comments.tok new file mode 100644 index 0000000..2fb6907 --- /dev/null +++ b/test_comments.tok @@ -0,0 +1,9 @@ +1 1 700 "(* hello *)" +2 1 700 "(* hello *)" +3 1 700 "(* I'd think this is a legal "string" that contains several \n \t +escaped characters, isn't it? *)" +4 1 700 "(* \ *)" +5 1 700 "(* *)" +6 1 700 "(*{COMMENT}+ *)" +7 1 700 "(* * *)" +8 1 700 "(* (hello) *)" diff --git a/test_generalTokenTest.tok b/test_generalTokenTest.tok new file mode 100644 index 0000000..69b1571 --- /dev/null +++ b/test_generalTokenTest.tok @@ -0,0 +1,61 @@ +1 1 101 "This" +1 2 101 "is" +1 3 101 "a" +1 4 101 "test" +2 1 301 "9" +2 1 101 "combined" +2 2 301 "7" +2 2 101 "okens" +3 1 301 "12345" +4 1 301 "893247892" +5 1 101 "combined" +5 2 101 "DueToUnknownChar" +5 3 101 "_validtoken" +5 4 101 "__validtoken1" +5 5 101 "_valid_token2" +5 6 101 "validToken3_" +6 1 305 "true" +6 2 306 "false" +7 1 302 "null" +7 2 401 "while" +7 3 609 "!" +7 3 101 "wrong" +7 4 402 "if" +7 5 101 "when" +8 1 404 "else" +8 2 405 "type" +8 3 406 "function" +9 1 407 "return" +9 3 408 "external" +9 11 409 "as" +10 1 101 "string" +10 2 101 "_NOte_that_was_not_reserved" +11 7 508 ":" +11 7 507 ";" +11 7 509 "," +11 7 510 "->" +12 1 601 "+" +12 1 602 "-" +12 1 603 "*" +12 1 604 "/" +12 1 605 "%" +13 1 606 "<" +13 1 607 "=" +14 1 608 ":=" +15 2 101 "This" +15 3 101 "is" +15 4 101 "not" +15 5 101 "a" +15 6 101 "valid" +16 1 101 "String" +17 1 304 ""This is a valid String"" +18 1 609 "!" +18 1 611 "|" +19 1 612 "." +19 1 612 "." +20 1 700 "(* this is a comment *)" +21 2 603 "*" +21 2 101 "Not" +21 3 101 "a" +21 4 101 "comment" +22 3 610 "&" diff --git a/test_keywords.tok b/test_keywords.tok new file mode 100644 index 0000000..9e70321 --- /dev/null +++ b/test_keywords.tok @@ -0,0 +1,29 @@ +1 1 401 "while" +2 1 101 "While" +3 1 101 "whiLe" +4 1 402 "if" +5 1 101 "IF" +6 1 101 "If" +7 1 101 "iF" +8 1 403 "then" +9 1 101 "Then" +10 1 101 "theN" +11 1 404 "else" +12 1 101 "eLse" +13 1 101 "elSe" +14 1 101 "Else" +15 1 405 "type" +16 1 101 "Type" +17 1 101 "tyPe" +18 1 406 "function" +19 1 101 "Function" +20 1 101 "functioN" +21 1 407 "return" +22 1 101 "Return" +23 1 101 "returN" +24 1 408 "external" +25 1 101 "External" +26 1 101 "exteRnal" +27 1 409 "as" +28 1 101 "As" +29 1 101 "aS" diff --git a/test_operators.tok b/test_operators.tok new file mode 100644 index 0000000..9ca0302 --- /dev/null +++ b/test_operators.tok @@ -0,0 +1,22 @@ +1 1 601 "+" +2 1 602 "-" +3 1 603 "*" +4 1 604 "/" +6 1 605 "%" +7 1 606 "<" +9 1 607 "=" +10 1 608 ":=" +11 1 607 "=" +11 1 508 ":" +12 1 508 ":" +13 1 607 "=" +14 1 609 "!" +15 1 610 "&" +16 1 611 "|" +17 1 612 "." +18 1 101 "relEASE" +19 1 614 "release" +20 1 101 "RELEASE" +21 1 613 "reserve" +22 1 101 "RESERVE" +23 1 101 "reSERVe" diff --git a/test_otherpunc.tok b/test_otherpunc.tok new file mode 100644 index 0000000..005f61c --- /dev/null +++ b/test_otherpunc.tok @@ -0,0 +1,7 @@ +1 1 507 ";" +2 1 508 ":" +3 1 509 "," +4 1 510 "->" +5 1 510 "->" +6 1 602 "-" +6 1 510 "->" diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok new file mode 100644 index 0000000..2bdbdd3 --- /dev/null +++ b/test_simpleIntTest.tok @@ -0,0 +1,3 @@ +1 1 301 "45" +2 1 301 "123" +3 1 301 "8392" diff --git a/test_simpleLiterals.tok b/test_simpleLiterals.tok new file mode 100644 index 0000000..51f07e1 --- /dev/null +++ b/test_simpleLiterals.tok @@ -0,0 +1,62 @@ +1 1 304 ""this is a string"" +1 2 301 "721398" +1 3 303 "'g'" +1 5 604 "/" +1 5 101 "n" +1 7 700 "(* should print 3 tokens before this *)" +4 1 301 "12893" +4 3 101 "this" +4 4 101 "is" +4 5 101 "not" +4 6 101 "a" +4 7 101 "string" +4 8 700 "(*one valid token before this*)" +5 1 700 "(* spacey comment here +over multiple lines +will it work? *)" +9 1 306 "false" +10 1 700 "(**)" +12 1 101 "nullfalse" +13 2 101 "nulltrue" +14 1 302 "null" +15 1 303 "'7'" +16 1 305 "true" +17 2 301 "189" +18 1 303 "'\t'" +19 1 303 "'"'" +20 1 303 "'/'" +21 1 303 "'\n'" +22 1 303 "'\''" +23 1 303 "'\t'" +25 1 303 "'n'" +27 2 101 "fdsf" +28 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" +33 1 304 ""STRINGwithnotSPaces"" +34 1 303 "' '" +36 1 304 ""J"" +37 1 304 """" +38 1 304 "" "" +40 1 304 ""{SCHAR}"" +41 1 304 ""SCHAR"" +42 1 304 ""[SCHAR]"" +43 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" +44 2 101 "I" +44 3 101 "d" +44 4 101 "think" +44 5 101 "this" +44 6 101 "is" +44 7 101 "a" +44 8 101 "legal" +44 11 101 "string" +44 14 101 "that" +44 15 101 "contains" +44 16 101 "several" +44 19 101 "n" +44 21 101 "t" +44 22 101 "escaped" +44 23 101 "characters" +44 23 509 "," +44 24 101 "isn" +44 25 101 "t" +44 26 101 "it" +45 1 101 "nullLike" From 3596a5e21ff982ecc3b8f6badee8c1e01f4e7e5f Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 18:53:26 -0500 Subject: [PATCH 2/6] deleted make created files --- flex.h | 477 --------- flex.o | Bin 34384 -> 0 bytes lex.yy.c | 2041 ------------------------------------- runner | Bin 31688 -> 0 bytes runner.o | Bin 4216 -> 0 bytes test_comments.tok | 9 - test_generalTokenTest.tok | 61 -- test_keywords.tok | 29 - test_operators.tok | 22 - test_otherpunc.tok | 7 - test_simpleIntTest.tok | 3 - test_simpleLiterals.tok | 62 -- 12 files changed, 2711 deletions(-) delete mode 100644 flex.h delete mode 100644 flex.o delete mode 100644 lex.yy.c delete mode 100755 runner delete mode 100644 runner.o delete mode 100644 test_comments.tok delete mode 100644 test_generalTokenTest.tok delete mode 100644 test_keywords.tok delete mode 100644 test_operators.tok delete mode 100644 test_otherpunc.tok delete mode 100644 test_simpleIntTest.tok delete mode 100644 test_simpleLiterals.tok diff --git a/flex.h b/flex.h deleted file mode 100644 index c017827..0000000 --- a/flex.h +++ /dev/null @@ -1,477 +0,0 @@ -#ifndef yyHEADER_H -#define yyHEADER_H 1 -#define yyIN_HEADER 1 - -#line 6 "flex.h" - -#line 8 "flex.h" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP - -extern int yylineno; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -#ifdef YY_HEADER_EXPORT_START_CONDITIONS -#define INITIAL 0 - -#endif - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -#ifndef yy_create_buffer_ALREADY_DEFINED -#undef yy_create_buffer -#endif -#ifndef yy_delete_buffer_ALREADY_DEFINED -#undef yy_delete_buffer -#endif -#ifndef yy_scan_buffer_ALREADY_DEFINED -#undef yy_scan_buffer -#endif -#ifndef yy_scan_string_ALREADY_DEFINED -#undef yy_scan_string -#endif -#ifndef yy_scan_bytes_ALREADY_DEFINED -#undef yy_scan_bytes -#endif -#ifndef yy_init_buffer_ALREADY_DEFINED -#undef yy_init_buffer -#endif -#ifndef yy_flush_buffer_ALREADY_DEFINED -#undef yy_flush_buffer -#endif -#ifndef yy_load_buffer_state_ALREADY_DEFINED -#undef yy_load_buffer_state -#endif -#ifndef yy_switch_to_buffer_ALREADY_DEFINED -#undef yy_switch_to_buffer -#endif -#ifndef yypush_buffer_state_ALREADY_DEFINED -#undef yypush_buffer_state -#endif -#ifndef yypop_buffer_state_ALREADY_DEFINED -#undef yypop_buffer_state -#endif -#ifndef yyensure_buffer_stack_ALREADY_DEFINED -#undef yyensure_buffer_stack -#endif -#ifndef yylex_ALREADY_DEFINED -#undef yylex -#endif -#ifndef yyrestart_ALREADY_DEFINED -#undef yyrestart -#endif -#ifndef yylex_init_ALREADY_DEFINED -#undef yylex_init -#endif -#ifndef yylex_init_extra_ALREADY_DEFINED -#undef yylex_init_extra -#endif -#ifndef yylex_destroy_ALREADY_DEFINED -#undef yylex_destroy -#endif -#ifndef yyget_debug_ALREADY_DEFINED -#undef yyget_debug -#endif -#ifndef yyset_debug_ALREADY_DEFINED -#undef yyset_debug -#endif -#ifndef yyget_extra_ALREADY_DEFINED -#undef yyget_extra -#endif -#ifndef yyset_extra_ALREADY_DEFINED -#undef yyset_extra -#endif -#ifndef yyget_in_ALREADY_DEFINED -#undef yyget_in -#endif -#ifndef yyset_in_ALREADY_DEFINED -#undef yyset_in -#endif -#ifndef yyget_out_ALREADY_DEFINED -#undef yyget_out -#endif -#ifndef yyset_out_ALREADY_DEFINED -#undef yyset_out -#endif -#ifndef yyget_leng_ALREADY_DEFINED -#undef yyget_leng -#endif -#ifndef yyget_text_ALREADY_DEFINED -#undef yyget_text -#endif -#ifndef yyget_lineno_ALREADY_DEFINED -#undef yyget_lineno -#endif -#ifndef yyset_lineno_ALREADY_DEFINED -#undef yyset_lineno -#endif -#ifndef yyget_column_ALREADY_DEFINED -#undef yyget_column -#endif -#ifndef yyset_column_ALREADY_DEFINED -#undef yyset_column -#endif -#ifndef yywrap_ALREADY_DEFINED -#undef yywrap -#endif -#ifndef yyget_lval_ALREADY_DEFINED -#undef yyget_lval -#endif -#ifndef yyset_lval_ALREADY_DEFINED -#undef yyset_lval -#endif -#ifndef yyget_lloc_ALREADY_DEFINED -#undef yyget_lloc -#endif -#ifndef yyset_lloc_ALREADY_DEFINED -#undef yyset_lloc -#endif -#ifndef yyalloc_ALREADY_DEFINED -#undef yyalloc -#endif -#ifndef yyrealloc_ALREADY_DEFINED -#undef yyrealloc -#endif -#ifndef yyfree_ALREADY_DEFINED -#undef yyfree -#endif -#ifndef yytext_ALREADY_DEFINED -#undef yytext -#endif -#ifndef yyleng_ALREADY_DEFINED -#undef yyleng -#endif -#ifndef yyin_ALREADY_DEFINED -#undef yyin -#endif -#ifndef yyout_ALREADY_DEFINED -#undef yyout -#endif -#ifndef yy_flex_debug_ALREADY_DEFINED -#undef yy_flex_debug -#endif -#ifndef yylineno_ALREADY_DEFINED -#undef yylineno -#endif -#ifndef yytables_fload_ALREADY_DEFINED -#undef yytables_fload -#endif -#ifndef yytables_destroy_ALREADY_DEFINED -#undef yytables_destroy -#endif -#ifndef yyTABLES_NAME_ALREADY_DEFINED -#undef yyTABLES_NAME -#endif - -#line 74 "lexicalStructure.lex" - - -#line 476 "flex.h" -#undef yyIN_HEADER -#endif /* yyHEADER_H */ diff --git a/flex.o b/flex.o deleted file mode 100644 index f8acaf4d65edcb38fda1c8c1d0b8b8eb3e684a64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34384 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

ODBcCr)Uy++WxcC5XA! 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 diff --git a/lex.yy.c b/lex.yy.c deleted file mode 100644 index 69aedb9..0000000 --- a/lex.yy.c +++ /dev/null @@ -1,2041 +0,0 @@ -#line 2 "lex.yy.c" - -#line 4 "lex.yy.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 42 -#define YY_END_OF_BUFFER 43 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[131] = - { 0, - 0, 0, 43, 41, 40, 24, 41, 20, 25, 41, - 41, 18, 16, 30, 17, 27, 19, 32, 29, 28, - 21, 22, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 26, 0, 34, 0, 0, 0, 0, - 31, 32, 23, 39, 39, 39, 13, 39, 39, 39, - 39, 39, 6, 39, 39, 39, 39, 39, 39, 39, - 33, 0, 0, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, - 0, 39, 39, 39, 8, 39, 39, 39, 39, 38, - 39, 39, 39, 7, 36, 9, 39, 39, 39, 39, - - 39, 37, 39, 39, 39, 39, 39, 5, 39, 39, - 39, 39, 39, 39, 39, 39, 11, 3, 2, 39, - 39, 39, 1, 14, 15, 39, 12, 10, 4, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 5, 1, 1, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, - 21, 22, 1, 1, 23, 24, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 1, 25, 1, 1, 23, 1, 26, 23, 27, 28, - - 29, 30, 31, 32, 33, 23, 23, 34, 23, 35, - 36, 37, 23, 38, 39, 40, 41, 42, 43, 44, - 45, 23, 1, 46, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[47] = - { 0, - 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, - 1, 1, 4, 4, 1, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1 - } ; - -static const flex_int16_t yy_base[135] = - { 0, - 0, 0, 160, 161, 161, 161, 42, 161, 161, 134, - 147, 161, 161, 161, 135, 161, 161, 139, 134, 161, - 161, 161, 0, 118, 20, 121, 16, 23, 21, 111, - 122, 20, 118, 161, 48, 161, 49, 141, 47, 137, - 161, 130, 161, 0, 110, 117, 0, 118, 104, 102, - 107, 105, 0, 99, 104, 23, 108, 95, 98, 101, - 161, 122, 58, 98, 93, 92, 100, 99, 88, 99, - 96, 90, 94, 93, 80, 85, 90, 89, 83, 161, - 60, 87, 86, 88, 0, 75, 83, 71, 79, 0, - 83, 70, 69, 0, 0, 0, 77, 79, 65, 76, - - 67, 0, 63, 66, 53, 46, 51, 0, 50, 44, - 41, 54, 43, 40, 48, 47, 0, 0, 0, 46, - 40, 37, 0, 0, 0, 28, 0, 0, 0, 161, - 89, 93, 57, 97 - } ; - -static const flex_int16_t yy_def[135] = - { 0, - 130, 1, 130, 130, 130, 130, 131, 130, 130, 132, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 130, 131, 130, 130, 130, 130, 134, - 130, 130, 130, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 130, 134, 134, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 130, - 134, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 0, - 130, 130, 130, 130 - } ; - -static const flex_int16_t yy_nxt[208] = - { 0, - 4, 4, 5, 6, 7, 8, 9, 10, 11, 4, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 4, 23, 24, 4, 25, 26, 23, 27, 28, - 23, 23, 29, 23, 30, 23, 23, 31, 23, 32, - 23, 23, 33, 23, 23, 34, 36, 46, 51, 49, - 53, 57, 36, 35, 38, 54, 73, 58, 47, 50, - 44, 74, 75, 52, 59, 129, 37, 80, 81, 130, - 81, 128, 37, 127, 126, 125, 124, 123, 122, 121, - 120, 38, 119, 35, 118, 117, 38, 116, 35, 35, - 35, 115, 35, 38, 114, 113, 38, 62, 62, 62, - - 62, 112, 111, 110, 109, 108, 107, 106, 105, 104, - 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, - 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, - 83, 82, 63, 79, 78, 77, 76, 72, 71, 70, - 69, 68, 67, 66, 65, 64, 42, 63, 61, 60, - 56, 55, 48, 45, 43, 42, 41, 40, 39, 130, - 3, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130 - } ; - -static const flex_int16_t yy_chk[208] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 25, 28, 27, - 29, 32, 35, 37, 39, 29, 56, 32, 25, 27, - 133, 56, 56, 28, 32, 126, 7, 63, 63, 81, - 81, 122, 35, 121, 120, 116, 115, 114, 113, 112, - 111, 39, 110, 37, 109, 107, 39, 106, 37, 131, - 131, 105, 131, 132, 104, 103, 132, 134, 134, 134, - - 134, 101, 100, 99, 98, 97, 93, 92, 91, 89, - 88, 87, 86, 84, 83, 82, 79, 78, 77, 76, - 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, - 65, 64, 62, 60, 59, 58, 57, 55, 54, 52, - 51, 50, 49, 48, 46, 45, 42, 40, 38, 33, - 31, 30, 26, 24, 19, 18, 15, 11, 10, 3, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "lexicalStructure.lex" -/* Lexical Analysis with Flex (1.6.0) We used some of the code from this manual */ -/* so we placed the citation here. */ -/* definitions */ -#line 8 "lexicalStructure.lex" - #include - #include "typedefs.h" - int line_number = 1, column_number = 1; - bool DEBUG = false; -#line 542 "lex.yy.c" -#line 19 "lexicalStructure.lex" - /* char can be a newline, tab, an escaped quote, or anything but a single quote, an actual line break, an actual tab, or a backslash by itself (to prevent confusion from escaped quote */ - /* similar to above, a string Char (SCHAR) is the same as a CHAR except we cannot have double quotes instead of single quotes. Double quotes need to be escaped in Flex unlike single quotes based on documentation */ -#line 546 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -#line 23 "lexicalStructure.lex" - - -#line 766 "lex.yy.c" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 161 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 25 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 26 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_ADDRESS: %s (%d)\n", yytext, T_ADDRESS);} else {return T_ADDRESS;}} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 27 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_BOOLEAN: %s (%d)\n", yytext, T_BOOLEAN);} else {return T_BOOLEAN;}} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 28 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_CHARACTER: %s (%d)\n", yytext, T_CHARACTER);} else {return T_CHARACTER;}} - YY_BREAK -case 5: -YY_RULE_SETUP -#line 30 "lexicalStructure.lex" -{if(DEBUG) {printf( "WHILE: %s (%d)\n", yytext, WHILE);} else {return WHILE;}} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 31 "lexicalStructure.lex" -{if(DEBUG) {printf( "IF: %s (%d)\n", yytext, IF);} else {return IF;}} - YY_BREAK -case 7: -YY_RULE_SETUP -#line 32 "lexicalStructure.lex" -{if(DEBUG) {printf( "THEN: %s (%d)\n", yytext, THEN);} else {return THEN;}} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 33 "lexicalStructure.lex" -{if(DEBUG) {printf( "ELSE: %s (%d)\n", yytext, ELSE);} else {return ELSE;}} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 34 "lexicalStructure.lex" -{if(DEBUG) {printf( "TYPE: %s (%d)\n", yytext, TYPE);} else {return TYPE;}} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 35 "lexicalStructure.lex" -{if(DEBUG) {printf( "FUNCTION: %s (%d)\n", yytext, FUNCTION);} else {return FUNCTION;}} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 36 "lexicalStructure.lex" -{if(DEBUG) {printf( "RETURN: %s (%d)\n", yytext, RETURN);} else {return RETURN;}} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 37 "lexicalStructure.lex" -{if(DEBUG) {printf( "EXTERNAL: %s (%d)\n", yytext, EXTERNAL);} else {return EXTERNAL;}} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 38 "lexicalStructure.lex" -{if(DEBUG) {printf( "AS: %s (%d)\n", yytext, AS);} else {return AS;}} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 40 "lexicalStructure.lex" -{if(DEBUG) {printf( "RELEASE: %s (%d)\n", yytext, RELEASE);} else {return RELEASE;}} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 41 "lexicalStructure.lex" -{if(DEBUG) {printf( "RESERVE: %s (%d)\n", yytext, RESERVE);} else {return RESERVE;}} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 43 "lexicalStructure.lex" -{if(DEBUG) {printf( "ADD: %s (%d)\n", yytext, ADD);} else {return ADD;}} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 44 "lexicalStructure.lex" -{if(DEBUG) {printf( "SUB_OR_NEG: %s (%d)\n", yytext, SUB_OR_NEG);} else {return SUB_OR_NEG;}} - YY_BREAK -case 18: -YY_RULE_SETUP -#line 45 "lexicalStructure.lex" -{if(DEBUG) {printf( "MUL: %s (%d)\n", yytext, MUL);} else {return MUL;}} - YY_BREAK -case 19: -YY_RULE_SETUP -#line 46 "lexicalStructure.lex" -{if(DEBUG) {printf( "DIV: %s (%d)\n", yytext, DIV);} else {return DIV;}} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 47 "lexicalStructure.lex" -{if(DEBUG) {printf( "REM: %s (%d)\n", yytext, REM);} else {return REM;}} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 48 "lexicalStructure.lex" -{if(DEBUG) {printf( "LESS_THAN: %s (%d)\n", yytext, LESS_THAN);} else {return LESS_THAN;}} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 49 "lexicalStructure.lex" -{if(DEBUG) {printf( "EQUAL_TO: %s (%d)\n", yytext, EQUAL_TO);} else {return EQUAL_TO;}} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 50 "lexicalStructure.lex" -{if(DEBUG) {printf( "ASSIGN: %s (%d)\n", yytext, ASSIGN);} else {return ASSIGN;}} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 51 "lexicalStructure.lex" -{if(DEBUG) {printf( "NOT: %s (%d)\n", yytext, NOT);} else {return NOT;}} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 52 "lexicalStructure.lex" -{if(DEBUG) {printf( "AND: %s (%d)\n", yytext, AND);} else {return AND;}} - YY_BREAK -case 26: -YY_RULE_SETUP -#line 53 "lexicalStructure.lex" -{if(DEBUG) {printf( "OR: %s (%d)\n", yytext, OR);} else {return OR;}} - YY_BREAK -case 27: -YY_RULE_SETUP -#line 54 "lexicalStructure.lex" -{if(DEBUG) {printf( "DOT: %s (%d)\n", yytext, DOT);} else {return DOT;}} - YY_BREAK -case 28: -YY_RULE_SETUP -#line 56 "lexicalStructure.lex" -{if(DEBUG) {printf( "SEMI_COLON: %s (%d)\n", yytext, SEMI_COLON);} else {return SEMI_COLON;}} - YY_BREAK -case 29: -YY_RULE_SETUP -#line 57 "lexicalStructure.lex" -{if(DEBUG) {printf( "COLON: %s (%d)\n", yytext, COLON);} else {return COLON;}} - YY_BREAK -case 30: -YY_RULE_SETUP -#line 58 "lexicalStructure.lex" -{if(DEBUG) {printf( "COMMA: %s (%d)\n", yytext, COMMA);} else {return COMMA;}} - YY_BREAK -case 31: -YY_RULE_SETUP -#line 59 "lexicalStructure.lex" -{if(DEBUG) {printf( "ARROW: %s (%d)\n", yytext, ARROW);} else {return ARROW;}} - YY_BREAK -case 32: -YY_RULE_SETUP -#line 61 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_INTEGER: %s (%d)\n", yytext, C_INTEGER);} else {return C_INTEGER;}} - YY_BREAK -case 33: -YY_RULE_SETUP -#line 62 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_CHARACTER: %s (%d)\n", yytext, C_CHARACTER);} else {return C_CHARACTER;}} - YY_BREAK -case 34: -YY_RULE_SETUP -#line 63 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_STRING: %s (%d)\n", yytext, C_STRING);} else {return C_STRING;}} - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -#line 64 "lexicalStructure.lex" -{if(DEBUG) {printf( "COMMENT: %s (%d)\n", yytext, COMMENT);} else {return COMMENT;}} - YY_BREAK -case 36: -YY_RULE_SETUP -#line 65 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_TRUE: %s (%d)\n", yytext, C_TRUE);} else {return C_TRUE;}} - YY_BREAK -case 37: -YY_RULE_SETUP -#line 66 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_FALSE: %s (%d)\n", yytext, C_FALSE);} else {return C_FALSE;}} - YY_BREAK -case 38: -YY_RULE_SETUP -#line 67 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_NULL: %s (%d)\n", yytext, C_NULL);} else {return C_NULL;}} - YY_BREAK -case 39: -YY_RULE_SETUP -#line 69 "lexicalStructure.lex" -{if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {return ID;}} - YY_BREAK -case 40: -/* rule 40 can match eol */ -YY_RULE_SETUP -#line 71 "lexicalStructure.lex" -{line_number++; column_number = 1;} - YY_BREAK -case 41: -YY_RULE_SETUP -#line 72 "lexicalStructure.lex" -{column_number++;} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 74 "lexicalStructure.lex" -ECHO; - YY_BREAK -#line 1035 "lex.yy.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 130); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 74 "lexicalStructure.lex" - - diff --git a/runner b/runner deleted file mode 100755 index 620f79ca8f59f14b034d2ad92795a58beb68cd82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31688 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 CgEuw+ diff --git a/test_comments.tok b/test_comments.tok deleted file mode 100644 index 2fb6907..0000000 --- a/test_comments.tok +++ /dev/null @@ -1,9 +0,0 @@ -1 1 700 "(* hello *)" -2 1 700 "(* hello *)" -3 1 700 "(* I'd think this is a legal "string" that contains several \n \t -escaped characters, isn't it? *)" -4 1 700 "(* \ *)" -5 1 700 "(* *)" -6 1 700 "(*{COMMENT}+ *)" -7 1 700 "(* * *)" -8 1 700 "(* (hello) *)" diff --git a/test_generalTokenTest.tok b/test_generalTokenTest.tok deleted file mode 100644 index 69b1571..0000000 --- a/test_generalTokenTest.tok +++ /dev/null @@ -1,61 +0,0 @@ -1 1 101 "This" -1 2 101 "is" -1 3 101 "a" -1 4 101 "test" -2 1 301 "9" -2 1 101 "combined" -2 2 301 "7" -2 2 101 "okens" -3 1 301 "12345" -4 1 301 "893247892" -5 1 101 "combined" -5 2 101 "DueToUnknownChar" -5 3 101 "_validtoken" -5 4 101 "__validtoken1" -5 5 101 "_valid_token2" -5 6 101 "validToken3_" -6 1 305 "true" -6 2 306 "false" -7 1 302 "null" -7 2 401 "while" -7 3 609 "!" -7 3 101 "wrong" -7 4 402 "if" -7 5 101 "when" -8 1 404 "else" -8 2 405 "type" -8 3 406 "function" -9 1 407 "return" -9 3 408 "external" -9 11 409 "as" -10 1 101 "string" -10 2 101 "_NOte_that_was_not_reserved" -11 7 508 ":" -11 7 507 ";" -11 7 509 "," -11 7 510 "->" -12 1 601 "+" -12 1 602 "-" -12 1 603 "*" -12 1 604 "/" -12 1 605 "%" -13 1 606 "<" -13 1 607 "=" -14 1 608 ":=" -15 2 101 "This" -15 3 101 "is" -15 4 101 "not" -15 5 101 "a" -15 6 101 "valid" -16 1 101 "String" -17 1 304 ""This is a valid String"" -18 1 609 "!" -18 1 611 "|" -19 1 612 "." -19 1 612 "." -20 1 700 "(* this is a comment *)" -21 2 603 "*" -21 2 101 "Not" -21 3 101 "a" -21 4 101 "comment" -22 3 610 "&" diff --git a/test_keywords.tok b/test_keywords.tok deleted file mode 100644 index 9e70321..0000000 --- a/test_keywords.tok +++ /dev/null @@ -1,29 +0,0 @@ -1 1 401 "while" -2 1 101 "While" -3 1 101 "whiLe" -4 1 402 "if" -5 1 101 "IF" -6 1 101 "If" -7 1 101 "iF" -8 1 403 "then" -9 1 101 "Then" -10 1 101 "theN" -11 1 404 "else" -12 1 101 "eLse" -13 1 101 "elSe" -14 1 101 "Else" -15 1 405 "type" -16 1 101 "Type" -17 1 101 "tyPe" -18 1 406 "function" -19 1 101 "Function" -20 1 101 "functioN" -21 1 407 "return" -22 1 101 "Return" -23 1 101 "returN" -24 1 408 "external" -25 1 101 "External" -26 1 101 "exteRnal" -27 1 409 "as" -28 1 101 "As" -29 1 101 "aS" diff --git a/test_operators.tok b/test_operators.tok deleted file mode 100644 index 9ca0302..0000000 --- a/test_operators.tok +++ /dev/null @@ -1,22 +0,0 @@ -1 1 601 "+" -2 1 602 "-" -3 1 603 "*" -4 1 604 "/" -6 1 605 "%" -7 1 606 "<" -9 1 607 "=" -10 1 608 ":=" -11 1 607 "=" -11 1 508 ":" -12 1 508 ":" -13 1 607 "=" -14 1 609 "!" -15 1 610 "&" -16 1 611 "|" -17 1 612 "." -18 1 101 "relEASE" -19 1 614 "release" -20 1 101 "RELEASE" -21 1 613 "reserve" -22 1 101 "RESERVE" -23 1 101 "reSERVe" diff --git a/test_otherpunc.tok b/test_otherpunc.tok deleted file mode 100644 index 005f61c..0000000 --- a/test_otherpunc.tok +++ /dev/null @@ -1,7 +0,0 @@ -1 1 507 ";" -2 1 508 ":" -3 1 509 "," -4 1 510 "->" -5 1 510 "->" -6 1 602 "-" -6 1 510 "->" diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok deleted file mode 100644 index 2bdbdd3..0000000 --- a/test_simpleIntTest.tok +++ /dev/null @@ -1,3 +0,0 @@ -1 1 301 "45" -2 1 301 "123" -3 1 301 "8392" diff --git a/test_simpleLiterals.tok b/test_simpleLiterals.tok deleted file mode 100644 index 51f07e1..0000000 --- a/test_simpleLiterals.tok +++ /dev/null @@ -1,62 +0,0 @@ -1 1 304 ""this is a string"" -1 2 301 "721398" -1 3 303 "'g'" -1 5 604 "/" -1 5 101 "n" -1 7 700 "(* should print 3 tokens before this *)" -4 1 301 "12893" -4 3 101 "this" -4 4 101 "is" -4 5 101 "not" -4 6 101 "a" -4 7 101 "string" -4 8 700 "(*one valid token before this*)" -5 1 700 "(* spacey comment here -over multiple lines -will it work? *)" -9 1 306 "false" -10 1 700 "(**)" -12 1 101 "nullfalse" -13 2 101 "nulltrue" -14 1 302 "null" -15 1 303 "'7'" -16 1 305 "true" -17 2 301 "189" -18 1 303 "'\t'" -19 1 303 "'"'" -20 1 303 "'/'" -21 1 303 "'\n'" -22 1 303 "'\''" -23 1 303 "'\t'" -25 1 303 "'n'" -27 2 101 "fdsf" -28 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" -33 1 304 ""STRINGwithnotSPaces"" -34 1 303 "' '" -36 1 304 ""J"" -37 1 304 """" -38 1 304 "" "" -40 1 304 ""{SCHAR}"" -41 1 304 ""SCHAR"" -42 1 304 ""[SCHAR]"" -43 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" -44 2 101 "I" -44 3 101 "d" -44 4 101 "think" -44 5 101 "this" -44 6 101 "is" -44 7 101 "a" -44 8 101 "legal" -44 11 101 "string" -44 14 101 "that" -44 15 101 "contains" -44 16 101 "several" -44 19 101 "n" -44 21 101 "t" -44 22 101 "escaped" -44 23 101 "characters" -44 23 509 "," -44 24 101 "isn" -44 25 101 "t" -44 26 101 "it" -45 1 101 "nullLike" From 90407da44c7e5e3a456292f4f73b9d228dcfcc39 Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 19:00:43 -0500 Subject: [PATCH 3/6] ran make file to display all .tok files --- Makefile | 5 +- flex.h | 477 +++++++++ flex.o | Bin 0 -> 27880 bytes lex.yy.c | 2043 +++++++++++++++++++++++++++++++++++++ lexicalStructure.lex | 4 +- runner | Bin 0 -> 31632 bytes runner.o | Bin 0 -> 4216 bytes test_comments.tok | 9 + test_generalTokenTest.tok | 61 ++ test_keywords.tok | 29 + test_operators.tok | 22 + test_otherpunc.tok | 7 + test_simpleIntTest.tok | 3 + test_simpleLiterals.tok | 62 ++ 14 files changed, 2720 insertions(+), 2 deletions(-) create mode 100644 flex.h create mode 100644 flex.o create mode 100644 lex.yy.c create mode 100755 runner create mode 100644 runner.o create mode 100644 test_comments.tok create mode 100644 test_generalTokenTest.tok create mode 100644 test_keywords.tok create mode 100644 test_operators.tok create mode 100644 test_otherpunc.tok create mode 100644 test_simpleIntTest.tok create mode 100644 test_simpleLiterals.tok diff --git a/Makefile b/Makefile index 1c78b93..81376c3 100644 --- a/Makefile +++ b/Makefile @@ -16,7 +16,10 @@ flex.o: lex.yy.c typedefs.h lex.yy.c: lexicalStructure.lex $(FLEX) -o lex.yy.c $(LEX) - + +debug: CFLAGS += -DDEBUG=1 +debug: clean runner + test: ./$(EXE) ./tests/test_comments.alpha ./$(EXE) ./tests/test_generalTokenTest.alpha diff --git a/flex.h b/flex.h new file mode 100644 index 0000000..c528013 --- /dev/null +++ b/flex.h @@ -0,0 +1,477 @@ +#ifndef yyHEADER_H +#define yyHEADER_H 1 +#define yyIN_HEADER 1 + +#line 6 "flex.h" + +#line 8 "flex.h" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 6 +#define YY_FLEX_SUBMINOR_VERSION 4 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP + +extern int yylineno; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +#ifdef YY_HEADER_EXPORT_START_CONDITIONS +#define INITIAL 0 + +#endif + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +#undef YY_NEW_FILE +#undef YY_FLUSH_BUFFER +#undef yy_set_bol +#undef yy_new_buffer +#undef yy_set_interactive +#undef YY_DO_BEFORE_ACTION + +#ifdef YY_DECL_IS_OURS +#undef YY_DECL_IS_OURS +#undef YY_DECL +#endif + +#ifndef yy_create_buffer_ALREADY_DEFINED +#undef yy_create_buffer +#endif +#ifndef yy_delete_buffer_ALREADY_DEFINED +#undef yy_delete_buffer +#endif +#ifndef yy_scan_buffer_ALREADY_DEFINED +#undef yy_scan_buffer +#endif +#ifndef yy_scan_string_ALREADY_DEFINED +#undef yy_scan_string +#endif +#ifndef yy_scan_bytes_ALREADY_DEFINED +#undef yy_scan_bytes +#endif +#ifndef yy_init_buffer_ALREADY_DEFINED +#undef yy_init_buffer +#endif +#ifndef yy_flush_buffer_ALREADY_DEFINED +#undef yy_flush_buffer +#endif +#ifndef yy_load_buffer_state_ALREADY_DEFINED +#undef yy_load_buffer_state +#endif +#ifndef yy_switch_to_buffer_ALREADY_DEFINED +#undef yy_switch_to_buffer +#endif +#ifndef yypush_buffer_state_ALREADY_DEFINED +#undef yypush_buffer_state +#endif +#ifndef yypop_buffer_state_ALREADY_DEFINED +#undef yypop_buffer_state +#endif +#ifndef yyensure_buffer_stack_ALREADY_DEFINED +#undef yyensure_buffer_stack +#endif +#ifndef yylex_ALREADY_DEFINED +#undef yylex +#endif +#ifndef yyrestart_ALREADY_DEFINED +#undef yyrestart +#endif +#ifndef yylex_init_ALREADY_DEFINED +#undef yylex_init +#endif +#ifndef yylex_init_extra_ALREADY_DEFINED +#undef yylex_init_extra +#endif +#ifndef yylex_destroy_ALREADY_DEFINED +#undef yylex_destroy +#endif +#ifndef yyget_debug_ALREADY_DEFINED +#undef yyget_debug +#endif +#ifndef yyset_debug_ALREADY_DEFINED +#undef yyset_debug +#endif +#ifndef yyget_extra_ALREADY_DEFINED +#undef yyget_extra +#endif +#ifndef yyset_extra_ALREADY_DEFINED +#undef yyset_extra +#endif +#ifndef yyget_in_ALREADY_DEFINED +#undef yyget_in +#endif +#ifndef yyset_in_ALREADY_DEFINED +#undef yyset_in +#endif +#ifndef yyget_out_ALREADY_DEFINED +#undef yyget_out +#endif +#ifndef yyset_out_ALREADY_DEFINED +#undef yyset_out +#endif +#ifndef yyget_leng_ALREADY_DEFINED +#undef yyget_leng +#endif +#ifndef yyget_text_ALREADY_DEFINED +#undef yyget_text +#endif +#ifndef yyget_lineno_ALREADY_DEFINED +#undef yyget_lineno +#endif +#ifndef yyset_lineno_ALREADY_DEFINED +#undef yyset_lineno +#endif +#ifndef yyget_column_ALREADY_DEFINED +#undef yyget_column +#endif +#ifndef yyset_column_ALREADY_DEFINED +#undef yyset_column +#endif +#ifndef yywrap_ALREADY_DEFINED +#undef yywrap +#endif +#ifndef yyget_lval_ALREADY_DEFINED +#undef yyget_lval +#endif +#ifndef yyset_lval_ALREADY_DEFINED +#undef yyset_lval +#endif +#ifndef yyget_lloc_ALREADY_DEFINED +#undef yyget_lloc +#endif +#ifndef yyset_lloc_ALREADY_DEFINED +#undef yyset_lloc +#endif +#ifndef yyalloc_ALREADY_DEFINED +#undef yyalloc +#endif +#ifndef yyrealloc_ALREADY_DEFINED +#undef yyrealloc +#endif +#ifndef yyfree_ALREADY_DEFINED +#undef yyfree +#endif +#ifndef yytext_ALREADY_DEFINED +#undef yytext +#endif +#ifndef yyleng_ALREADY_DEFINED +#undef yyleng +#endif +#ifndef yyin_ALREADY_DEFINED +#undef yyin +#endif +#ifndef yyout_ALREADY_DEFINED +#undef yyout +#endif +#ifndef yy_flex_debug_ALREADY_DEFINED +#undef yy_flex_debug +#endif +#ifndef yylineno_ALREADY_DEFINED +#undef yylineno +#endif +#ifndef yytables_fload_ALREADY_DEFINED +#undef yytables_fload +#endif +#ifndef yytables_destroy_ALREADY_DEFINED +#undef yytables_destroy +#endif +#ifndef yyTABLES_NAME_ALREADY_DEFINED +#undef yyTABLES_NAME +#endif + +#line 76 "lexicalStructure.lex" + + +#line 476 "flex.h" +#undef yyIN_HEADER +#endif /* yyHEADER_H */ diff --git a/flex.o b/flex.o new file mode 100644 index 0000000000000000000000000000000000000000..c0c6827f98437382a2536fac1e48819a8616fb92 GIT binary patch literal 27880 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 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include +#include +#include +#include + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have . Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX (~(size_t)0) +#endif + +#endif /* ! C99 */ + +#endif /* ! FLEXINT_H */ + +/* begin standard C++ headers. */ + +/* TODO: this is always defined, so inline it */ +#define yyconst const + +#if defined(__GNUC__) && __GNUC__ >= 3 +#define yynoreturn __attribute__((__noreturn__)) +#else +#define yynoreturn +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an + * integer in range [0..255] for use as an array index. + */ +#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN (yy_start) = 1 + 2 * +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START (((yy_start) - 1) / 2) +#define YYSTATE YY_START +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE yyrestart( yyin ) +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k. + * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. + * Ditto for the __ia64__ case accordingly. + */ +#define YY_BUF_SIZE 32768 +#else +#define YY_BUF_SIZE 16384 +#endif /* __ia64__ */ +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +extern int yyleng; + +extern FILE *yyin, *yyout; + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + + #define YY_LESS_LINENO(n) + #define YY_LINENO_REWIND_TO(ptr) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = (yy_hold_char); \ + YY_RESTORE_YY_MORE_OFFSET \ + (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) +#define unput(c) yyunput( c, (yytext_ptr) ) + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state + { + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + int yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via yyrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + + }; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* Stack of input buffers. */ +static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ +static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ +static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ + ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ + : NULL) +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] + +/* yy_hold_char holds the character lost when yytext is formed. */ +static char yy_hold_char; +static int yy_n_chars; /* number of characters read into yy_ch_buf */ +int yyleng; + +/* Points to current character in buffer. */ +static char *yy_c_buf_p = NULL; +static int yy_init = 0; /* whether we need to initialize */ +static int yy_start = 0; /* start state number */ + +/* Flag which is used to allow yywrap()'s to do buffer switches + * instead of setting up a fresh yyin. A bit of a hack ... + */ +static int yy_did_buffer_switch_on_eof; + +void yyrestart ( FILE *input_file ); +void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); +YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); +void yy_delete_buffer ( YY_BUFFER_STATE b ); +void yy_flush_buffer ( YY_BUFFER_STATE b ); +void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); +void yypop_buffer_state ( void ); + +static void yyensure_buffer_stack ( void ); +static void yy_load_buffer_state ( void ); +static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); +#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) + +YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); +YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); +YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); + +void *yyalloc ( yy_size_t ); +void *yyrealloc ( void *, yy_size_t ); +void yyfree ( void * ); + +#define yy_new_buffer yy_create_buffer +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + yyensure_buffer_stack (); \ + YY_CURRENT_BUFFER_LVALUE = \ + yy_create_buffer( yyin, YY_BUF_SIZE ); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +#define yywrap() (/*CONSTCOND*/1) +#define YY_SKIP_YYWRAP +typedef flex_uint8_t YY_CHAR; + +FILE *yyin = NULL, *yyout = NULL; + +typedef int yy_state_type; + +extern int yylineno; +int yylineno = 1; + +extern char *yytext; +#ifdef yytext_ptr +#undef yytext_ptr +#endif +#define yytext_ptr yytext + +static yy_state_type yy_get_previous_state ( void ); +static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); +static int yy_get_next_buffer ( void ); +static void yynoreturn yy_fatal_error ( const char* msg ); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + (yytext_ptr) = yy_bp; \ + yyleng = (int) (yy_cp - yy_bp); \ + (yy_hold_char) = *yy_cp; \ + *yy_cp = '\0'; \ + (yy_c_buf_p) = yy_cp; +#define YY_NUM_RULES 42 +#define YY_END_OF_BUFFER 43 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info + { + flex_int32_t yy_verify; + flex_int32_t yy_nxt; + }; +static const flex_int16_t yy_accept[131] = + { 0, + 0, 0, 43, 41, 40, 24, 41, 20, 25, 41, + 41, 18, 16, 30, 17, 27, 19, 32, 29, 28, + 21, 22, 39, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 26, 0, 34, 0, 0, 0, 0, + 31, 32, 23, 39, 39, 39, 13, 39, 39, 39, + 39, 39, 6, 39, 39, 39, 39, 39, 39, 39, + 33, 0, 0, 39, 39, 39, 39, 39, 39, 39, + 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, + 0, 39, 39, 39, 8, 39, 39, 39, 39, 38, + 39, 39, 39, 7, 36, 9, 39, 39, 39, 39, + + 39, 37, 39, 39, 39, 39, 39, 5, 39, 39, + 39, 39, 39, 39, 39, 39, 11, 3, 2, 39, + 39, 39, 1, 14, 15, 39, 12, 10, 4, 0 + } ; + +static const YY_CHAR yy_ec[256] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 4, 5, 1, 1, 6, 7, 8, 9, + 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, + 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, + 21, 22, 1, 1, 23, 24, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, + 1, 25, 1, 1, 23, 1, 26, 23, 27, 28, + + 29, 30, 31, 32, 33, 23, 23, 34, 23, 35, + 36, 37, 23, 38, 39, 40, 41, 42, 43, 44, + 45, 23, 1, 46, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 + } ; + +static const YY_CHAR yy_meta[47] = + { 0, + 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, + 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, + 1, 1, 4, 4, 1, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + 4, 4, 4, 4, 4, 1 + } ; + +static const flex_int16_t yy_base[135] = + { 0, + 0, 0, 160, 161, 161, 161, 42, 161, 161, 134, + 147, 161, 161, 161, 135, 161, 161, 139, 134, 161, + 161, 161, 0, 118, 20, 121, 16, 23, 21, 111, + 122, 20, 118, 161, 48, 161, 49, 141, 47, 137, + 161, 130, 161, 0, 110, 117, 0, 118, 104, 102, + 107, 105, 0, 99, 104, 23, 108, 95, 98, 101, + 161, 122, 58, 98, 93, 92, 100, 99, 88, 99, + 96, 90, 94, 93, 80, 85, 90, 89, 83, 161, + 60, 87, 86, 88, 0, 75, 83, 71, 79, 0, + 83, 70, 69, 0, 0, 0, 77, 79, 65, 76, + + 67, 0, 63, 66, 53, 46, 51, 0, 50, 44, + 41, 54, 43, 40, 48, 47, 0, 0, 0, 46, + 40, 37, 0, 0, 0, 28, 0, 0, 0, 161, + 89, 93, 57, 97 + } ; + +static const flex_int16_t yy_def[135] = + { 0, + 130, 1, 130, 130, 130, 130, 131, 130, 130, 132, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 130, 131, 130, 130, 130, 130, 134, + 130, 130, 130, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 130, 134, 134, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 130, + 134, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, + 133, 133, 133, 133, 133, 133, 133, 133, 133, 0, + 130, 130, 130, 130 + } ; + +static const flex_int16_t yy_nxt[208] = + { 0, + 4, 4, 5, 6, 7, 8, 9, 10, 11, 4, + 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, + 22, 4, 23, 24, 4, 25, 26, 23, 27, 28, + 23, 23, 29, 23, 30, 23, 23, 31, 23, 32, + 23, 23, 33, 23, 23, 34, 36, 46, 51, 49, + 53, 57, 36, 35, 38, 54, 73, 58, 47, 50, + 44, 74, 75, 52, 59, 129, 37, 80, 81, 130, + 81, 128, 37, 127, 126, 125, 124, 123, 122, 121, + 120, 38, 119, 35, 118, 117, 38, 116, 35, 35, + 35, 115, 35, 38, 114, 113, 38, 62, 62, 62, + + 62, 112, 111, 110, 109, 108, 107, 106, 105, 104, + 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, + 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, + 83, 82, 63, 79, 78, 77, 76, 72, 71, 70, + 69, 68, 67, 66, 65, 64, 42, 63, 61, 60, + 56, 55, 48, 45, 43, 42, 41, 40, 39, 130, + 3, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + + 130, 130, 130, 130, 130, 130, 130 + } ; + +static const flex_int16_t yy_chk[208] = + { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 7, 25, 28, 27, + 29, 32, 35, 37, 39, 29, 56, 32, 25, 27, + 133, 56, 56, 28, 32, 126, 7, 63, 63, 81, + 81, 122, 35, 121, 120, 116, 115, 114, 113, 112, + 111, 39, 110, 37, 109, 107, 39, 106, 37, 131, + 131, 105, 131, 132, 104, 103, 132, 134, 134, 134, + + 134, 101, 100, 99, 98, 97, 93, 92, 91, 89, + 88, 87, 86, 84, 83, 82, 79, 78, 77, 76, + 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, + 65, 64, 62, 60, 59, 58, 57, 55, 54, 52, + 51, 50, 49, 48, 46, 45, 42, 40, 38, 33, + 31, 30, 26, 24, 19, 18, 15, 11, 10, 3, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, + + 130, 130, 130, 130, 130, 130, 130 + } ; + +static yy_state_type yy_last_accepting_state; +static char *yy_last_accepting_cpos; + +extern int yy_flex_debug; +int yy_flex_debug = 0; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +char *yytext; +#line 1 "lexicalStructure.lex" +/* Lexical Analysis with Flex (1.6.0) We used some of the code from this manual */ +/* so we placed the citation here. */ +/* definitions */ +#line 8 "lexicalStructure.lex" + #include + #include "typedefs.h" + int line_number = 1, column_number = 1; + #ifndef DEBUG + #define DEBUG 0 + #endif +#line 544 "lex.yy.c" +#line 21 "lexicalStructure.lex" + /* char can be a newline, tab, an escaped quote, or anything but a single quote, an actual line break, an actual tab, or a backslash by itself (to prevent confusion from escaped quote */ + /* similar to above, a string Char (SCHAR) is the same as a CHAR except we cannot have double quotes instead of single quotes. Double quotes need to be escaped in Flex unlike single quotes based on documentation */ +#line 548 "lex.yy.c" + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include +#endif + +#ifndef YY_EXTRA_TYPE +#define YY_EXTRA_TYPE void * +#endif + +static int yy_init_globals ( void ); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int yylex_destroy ( void ); + +int yyget_debug ( void ); + +void yyset_debug ( int debug_flag ); + +YY_EXTRA_TYPE yyget_extra ( void ); + +void yyset_extra ( YY_EXTRA_TYPE user_defined ); + +FILE *yyget_in ( void ); + +void yyset_in ( FILE * _in_str ); + +FILE *yyget_out ( void ); + +void yyset_out ( FILE * _out_str ); + + int yyget_leng ( void ); + +char *yyget_text ( void ); + +int yyget_lineno ( void ); + +void yyset_lineno ( int _line_number ); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int yywrap ( void ); +#else +extern int yywrap ( void ); +#endif +#endif + +#ifndef YY_NO_UNPUT + + static void yyunput ( int c, char *buf_ptr ); + +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy ( char *, const char *, int ); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen ( const char * ); +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int yyinput ( void ); +#else +static int input ( void ); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#ifdef __ia64__ +/* On IA-64, the buffer size is 16k, not 8k */ +#define YY_READ_BUF_SIZE 16384 +#else +#define YY_READ_BUF_SIZE 8192 +#endif /* __ia64__ */ +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + int n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int yylex (void); + +#define YY_DECL int yylex (void) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK /*LINTED*/break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + yy_state_type yy_current_state; + char *yy_cp, *yy_bp; + int yy_act; + + if ( !(yy_init) ) + { + (yy_init) = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if ( ! (yy_start) ) + (yy_start) = 1; /* first start state */ + + if ( ! yyin ) + yyin = stdin; + + if ( ! yyout ) + yyout = stdout; + + if ( ! YY_CURRENT_BUFFER ) { + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_load_buffer_state( ); + } + + { +#line 25 "lexicalStructure.lex" + + +#line 768 "lex.yy.c" + + while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ + { + yy_cp = (yy_c_buf_p); + + /* Support of yytext. */ + *yy_cp = (yy_hold_char); + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = (yy_start); +yy_match: + do + { + YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + ++yy_cp; + } + while ( yy_base[yy_current_state] != 161 ); + +yy_find_action: + yy_act = yy_accept[yy_current_state]; + if ( yy_act == 0 ) + { /* have to back up */ + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + +do_action: /* This label is used only to access EOF actions. */ + + switch ( yy_act ) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = (yy_hold_char); + yy_cp = (yy_last_accepting_cpos); + yy_current_state = (yy_last_accepting_state); + goto yy_find_action; + +case 1: +YY_RULE_SETUP +#line 27 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} + YY_BREAK +case 2: +YY_RULE_SETUP +#line 28 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_ADDRESS: %s (%d)\n", yytext, T_ADDRESS);} else {return T_ADDRESS;}} + YY_BREAK +case 3: +YY_RULE_SETUP +#line 29 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_BOOLEAN: %s (%d)\n", yytext, T_BOOLEAN);} else {return T_BOOLEAN;}} + YY_BREAK +case 4: +YY_RULE_SETUP +#line 30 "lexicalStructure.lex" +{if(DEBUG) {printf( "T_CHARACTER: %s (%d)\n", yytext, T_CHARACTER);} else {return T_CHARACTER;}} + YY_BREAK +case 5: +YY_RULE_SETUP +#line 32 "lexicalStructure.lex" +{if(DEBUG) {printf( "WHILE: %s (%d)\n", yytext, WHILE);} else {return WHILE;}} + YY_BREAK +case 6: +YY_RULE_SETUP +#line 33 "lexicalStructure.lex" +{if(DEBUG) {printf( "IF: %s (%d)\n", yytext, IF);} else {return IF;}} + YY_BREAK +case 7: +YY_RULE_SETUP +#line 34 "lexicalStructure.lex" +{if(DEBUG) {printf( "THEN: %s (%d)\n", yytext, THEN);} else {return THEN;}} + YY_BREAK +case 8: +YY_RULE_SETUP +#line 35 "lexicalStructure.lex" +{if(DEBUG) {printf( "ELSE: %s (%d)\n", yytext, ELSE);} else {return ELSE;}} + YY_BREAK +case 9: +YY_RULE_SETUP +#line 36 "lexicalStructure.lex" +{if(DEBUG) {printf( "TYPE: %s (%d)\n", yytext, TYPE);} else {return TYPE;}} + YY_BREAK +case 10: +YY_RULE_SETUP +#line 37 "lexicalStructure.lex" +{if(DEBUG) {printf( "FUNCTION: %s (%d)\n", yytext, FUNCTION);} else {return FUNCTION;}} + YY_BREAK +case 11: +YY_RULE_SETUP +#line 38 "lexicalStructure.lex" +{if(DEBUG) {printf( "RETURN: %s (%d)\n", yytext, RETURN);} else {return RETURN;}} + YY_BREAK +case 12: +YY_RULE_SETUP +#line 39 "lexicalStructure.lex" +{if(DEBUG) {printf( "EXTERNAL: %s (%d)\n", yytext, EXTERNAL);} else {return EXTERNAL;}} + YY_BREAK +case 13: +YY_RULE_SETUP +#line 40 "lexicalStructure.lex" +{if(DEBUG) {printf( "AS: %s (%d)\n", yytext, AS);} else {return AS;}} + YY_BREAK +case 14: +YY_RULE_SETUP +#line 42 "lexicalStructure.lex" +{if(DEBUG) {printf( "RELEASE: %s (%d)\n", yytext, RELEASE);} else {return RELEASE;}} + YY_BREAK +case 15: +YY_RULE_SETUP +#line 43 "lexicalStructure.lex" +{if(DEBUG) {printf( "RESERVE: %s (%d)\n", yytext, RESERVE);} else {return RESERVE;}} + YY_BREAK +case 16: +YY_RULE_SETUP +#line 45 "lexicalStructure.lex" +{if(DEBUG) {printf( "ADD: %s (%d)\n", yytext, ADD);} else {return ADD;}} + YY_BREAK +case 17: +YY_RULE_SETUP +#line 46 "lexicalStructure.lex" +{if(DEBUG) {printf( "SUB_OR_NEG: %s (%d)\n", yytext, SUB_OR_NEG);} else {return SUB_OR_NEG;}} + YY_BREAK +case 18: +YY_RULE_SETUP +#line 47 "lexicalStructure.lex" +{if(DEBUG) {printf( "MUL: %s (%d)\n", yytext, MUL);} else {return MUL;}} + YY_BREAK +case 19: +YY_RULE_SETUP +#line 48 "lexicalStructure.lex" +{if(DEBUG) {printf( "DIV: %s (%d)\n", yytext, DIV);} else {return DIV;}} + YY_BREAK +case 20: +YY_RULE_SETUP +#line 49 "lexicalStructure.lex" +{if(DEBUG) {printf( "REM: %s (%d)\n", yytext, REM);} else {return REM;}} + YY_BREAK +case 21: +YY_RULE_SETUP +#line 50 "lexicalStructure.lex" +{if(DEBUG) {printf( "LESS_THAN: %s (%d)\n", yytext, LESS_THAN);} else {return LESS_THAN;}} + YY_BREAK +case 22: +YY_RULE_SETUP +#line 51 "lexicalStructure.lex" +{if(DEBUG) {printf( "EQUAL_TO: %s (%d)\n", yytext, EQUAL_TO);} else {return EQUAL_TO;}} + YY_BREAK +case 23: +YY_RULE_SETUP +#line 52 "lexicalStructure.lex" +{if(DEBUG) {printf( "ASSIGN: %s (%d)\n", yytext, ASSIGN);} else {return ASSIGN;}} + YY_BREAK +case 24: +YY_RULE_SETUP +#line 53 "lexicalStructure.lex" +{if(DEBUG) {printf( "NOT: %s (%d)\n", yytext, NOT);} else {return NOT;}} + YY_BREAK +case 25: +YY_RULE_SETUP +#line 54 "lexicalStructure.lex" +{if(DEBUG) {printf( "AND: %s (%d)\n", yytext, AND);} else {return AND;}} + YY_BREAK +case 26: +YY_RULE_SETUP +#line 55 "lexicalStructure.lex" +{if(DEBUG) {printf( "OR: %s (%d)\n", yytext, OR);} else {return OR;}} + YY_BREAK +case 27: +YY_RULE_SETUP +#line 56 "lexicalStructure.lex" +{if(DEBUG) {printf( "DOT: %s (%d)\n", yytext, DOT);} else {return DOT;}} + YY_BREAK +case 28: +YY_RULE_SETUP +#line 58 "lexicalStructure.lex" +{if(DEBUG) {printf( "SEMI_COLON: %s (%d)\n", yytext, SEMI_COLON);} else {return SEMI_COLON;}} + YY_BREAK +case 29: +YY_RULE_SETUP +#line 59 "lexicalStructure.lex" +{if(DEBUG) {printf( "COLON: %s (%d)\n", yytext, COLON);} else {return COLON;}} + YY_BREAK +case 30: +YY_RULE_SETUP +#line 60 "lexicalStructure.lex" +{if(DEBUG) {printf( "COMMA: %s (%d)\n", yytext, COMMA);} else {return COMMA;}} + YY_BREAK +case 31: +YY_RULE_SETUP +#line 61 "lexicalStructure.lex" +{if(DEBUG) {printf( "ARROW: %s (%d)\n", yytext, ARROW);} else {return ARROW;}} + YY_BREAK +case 32: +YY_RULE_SETUP +#line 63 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_INTEGER: %s (%d)\n", yytext, C_INTEGER);} else {return C_INTEGER;}} + YY_BREAK +case 33: +YY_RULE_SETUP +#line 64 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_CHARACTER: %s (%d)\n", yytext, C_CHARACTER);} else {return C_CHARACTER;}} + YY_BREAK +case 34: +YY_RULE_SETUP +#line 65 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_STRING: %s (%d)\n", yytext, C_STRING);} else {return C_STRING;}} + YY_BREAK +case 35: +/* rule 35 can match eol */ +YY_RULE_SETUP +#line 66 "lexicalStructure.lex" +{if(DEBUG) {printf( "COMMENT: %s (%d)\n", yytext, COMMENT);} else {return COMMENT;}} + YY_BREAK +case 36: +YY_RULE_SETUP +#line 67 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_TRUE: %s (%d)\n", yytext, C_TRUE);} else {return C_TRUE;}} + YY_BREAK +case 37: +YY_RULE_SETUP +#line 68 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_FALSE: %s (%d)\n", yytext, C_FALSE);} else {return C_FALSE;}} + YY_BREAK +case 38: +YY_RULE_SETUP +#line 69 "lexicalStructure.lex" +{if(DEBUG) {printf( "C_NULL: %s (%d)\n", yytext, C_NULL);} else {return C_NULL;}} + YY_BREAK +case 39: +YY_RULE_SETUP +#line 71 "lexicalStructure.lex" +{if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {return ID;}} + YY_BREAK +case 40: +/* rule 40 can match eol */ +YY_RULE_SETUP +#line 73 "lexicalStructure.lex" +{line_number++; column_number = 1;} + YY_BREAK +case 41: +YY_RULE_SETUP +#line 74 "lexicalStructure.lex" +{column_number++;} + YY_BREAK +case 42: +YY_RULE_SETUP +#line 76 "lexicalStructure.lex" +ECHO; + YY_BREAK +#line 1037 "lex.yy.c" +case YY_STATE_EOF(INITIAL): + yyterminate(); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = (yy_hold_char); + YY_RESTORE_YY_MORE_OFFSET + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * yylex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = yy_try_NUL_trans( yy_current_state ); + + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + + if ( yy_next_state ) + { + /* Consume the NUL. */ + yy_cp = ++(yy_c_buf_p); + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = (yy_c_buf_p); + goto yy_find_action; + } + } + + else switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_END_OF_FILE: + { + (yy_did_buffer_switch_on_eof) = 0; + + if ( yywrap( ) ) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF(YY_START); + goto do_action; + } + + else + { + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = + (yytext_ptr) + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + (yy_c_buf_p) = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; + + yy_current_state = yy_get_previous_state( ); + + yy_cp = (yy_c_buf_p); + yy_bp = (yytext_ptr) + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR( + "fatal flex scanner internal error--no action found" ); + } /* end of action switch */ + } /* end of scanning one token */ + } /* end of user's declarations */ +} /* end of yylex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int yy_get_next_buffer (void) +{ + char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + char *source = (yytext_ptr); + int number_to_move, i; + int ret_val; + + if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) + YY_FATAL_ERROR( + "fatal flex scanner internal error--end of buffer missed" ); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) + { /* Don't try to fill the buffer, so this is an EOF. */ + if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); + + for ( i = 0; i < number_to_move; ++i ) + *(dest++) = *(source++); + + if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while ( num_to_read <= 0 ) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; + + int yy_c_buf_p_offset = + (int) ((yy_c_buf_p) - b->yy_ch_buf); + + if ( b->yy_is_our_buffer ) + { + int new_size = b->yy_buf_size * 2; + + if ( new_size <= 0 ) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + yyrealloc( (void *) b->yy_ch_buf, + (yy_size_t) (b->yy_buf_size + 2) ); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = NULL; + + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( + "fatal error - scanner input buffer overflow" ); + + (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if ( num_to_read > YY_READ_BUF_SIZE ) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + (yy_n_chars), num_to_read ); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + if ( (yy_n_chars) == 0 ) + { + if ( number_to_move == YY_MORE_ADJ ) + { + ret_val = EOB_ACT_END_OF_FILE; + yyrestart( yyin ); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { + /* Extend the array by 50%, plus the number we really need. */ + int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( + (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); + if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); + /* "- 2" to take care of EOB's */ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); + } + + (yy_n_chars) += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; + + (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + + static yy_state_type yy_get_previous_state (void) +{ + yy_state_type yy_current_state; + char *yy_cp; + + yy_current_state = (yy_start); + + for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) + { + YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ + static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) +{ + int yy_is_jam; + char *yy_cp = (yy_c_buf_p); + + YY_CHAR yy_c = 1; + if ( yy_accept[yy_current_state] ) + { + (yy_last_accepting_state) = yy_current_state; + (yy_last_accepting_cpos) = yy_cp; + } + while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) + { + yy_current_state = (int) yy_def[yy_current_state]; + if ( yy_current_state >= 131 ) + yy_c = yy_meta[yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; + yy_is_jam = (yy_current_state == 130); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_UNPUT + + static void yyunput (int c, char * yy_bp ) +{ + char *yy_cp; + + yy_cp = (yy_c_buf_p); + + /* undo effects of setting up yytext */ + *yy_cp = (yy_hold_char); + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + { /* need to shift things up to make room */ + /* +2 for EOB chars. */ + int number_to_move = (yy_n_chars) + 2; + char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ + YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; + char *source = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; + + while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) + *--dest = *--source; + + yy_cp += (int) (dest - source); + yy_bp += (int) (dest - source); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = + (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; + + if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) + YY_FATAL_ERROR( "flex scanner push-back overflow" ); + } + + *--yy_cp = (char) c; + + (yytext_ptr) = yy_bp; + (yy_hold_char) = *yy_cp; + (yy_c_buf_p) = yy_cp; +} + +#endif + +#ifndef YY_NO_INPUT +#ifdef __cplusplus + static int yyinput (void) +#else + static int input (void) +#endif + +{ + int c; + + *(yy_c_buf_p) = (yy_hold_char); + + if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) + /* This was really a NUL. */ + *(yy_c_buf_p) = '\0'; + + else + { /* need more input */ + int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); + ++(yy_c_buf_p); + + switch ( yy_get_next_buffer( ) ) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + yyrestart( yyin ); + + /*FALLTHROUGH*/ + + case EOB_ACT_END_OF_FILE: + { + if ( yywrap( ) ) + return 0; + + if ( ! (yy_did_buffer_switch_on_eof) ) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput(); +#else + return input(); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + (yy_c_buf_p) = (yytext_ptr) + offset; + break; + } + } + } + + c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ + *(yy_c_buf_p) = '\0'; /* preserve yytext */ + (yy_hold_char) = *++(yy_c_buf_p); + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * + * @note This function does not reset the start condition to @c INITIAL . + */ + void yyrestart (FILE * input_file ) +{ + + if ( ! YY_CURRENT_BUFFER ){ + yyensure_buffer_stack (); + YY_CURRENT_BUFFER_LVALUE = + yy_create_buffer( yyin, YY_BUF_SIZE ); + } + + yy_init_buffer( YY_CURRENT_BUFFER, input_file ); + yy_load_buffer_state( ); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * + */ + void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) +{ + + /* TODO. We should be able to replace this entire function body + * with + * yypop_buffer_state(); + * yypush_buffer_state(new_buffer); + */ + yyensure_buffer_stack (); + if ( YY_CURRENT_BUFFER == new_buffer ) + return; + + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + yy_load_buffer_state( ); + + /* We don't actually know whether we did this switch during + * EOF (yywrap()) processing, but the only time this flag + * is looked at is after yywrap() is called, so it's safe + * to go ahead and always set it. + */ + (yy_did_buffer_switch_on_eof) = 1; +} + +static void yy_load_buffer_state (void) +{ + (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + (yy_hold_char) = *(yy_c_buf_p); +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * + * @return the allocated buffer state. + */ + YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); + if ( ! b->yy_ch_buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); + + b->yy_is_our_buffer = 1; + + yy_init_buffer( b, file ); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with yy_create_buffer() + * + */ + void yy_delete_buffer (YY_BUFFER_STATE b ) +{ + + if ( ! b ) + return; + + if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if ( b->yy_is_our_buffer ) + yyfree( (void *) b->yy_ch_buf ); + + yyfree( (void *) b ); +} + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a yyrestart() or at EOF. + */ + static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) + +{ + int oerrno = errno; + + yy_flush_buffer( b ); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then yy_init_buffer was _probably_ + * called from yyrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER){ + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * + */ + void yy_flush_buffer (YY_BUFFER_STATE b ) +{ + if ( ! b ) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if ( b == YY_CURRENT_BUFFER ) + yy_load_buffer_state( ); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * + */ +void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) +{ + if (new_buffer == NULL) + return; + + yyensure_buffer_stack(); + + /* This block is copied from yy_switch_to_buffer. */ + if ( YY_CURRENT_BUFFER ) + { + /* Flush out information for old buffer. */ + *(yy_c_buf_p) = (yy_hold_char); + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + (yy_buffer_stack_top)++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from yy_switch_to_buffer. */ + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * + */ +void yypop_buffer_state (void) +{ + if (!YY_CURRENT_BUFFER) + return; + + yy_delete_buffer(YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + if ((yy_buffer_stack_top) > 0) + --(yy_buffer_stack_top); + + if (YY_CURRENT_BUFFER) { + yy_load_buffer_state( ); + (yy_did_buffer_switch_on_eof) = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void yyensure_buffer_stack (void) +{ + yy_size_t num_to_alloc; + + if (!(yy_buffer_stack)) { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ + (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc + (num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); + + (yy_buffer_stack_max) = num_to_alloc; + (yy_buffer_stack_top) = 0; + return; + } + + if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ + + /* Increase the buffer to prepare for a possible push. */ + yy_size_t grow_size = 8 /* arbitrary grow size */; + + num_to_alloc = (yy_buffer_stack_max) + grow_size; + (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc + ((yy_buffer_stack), + num_to_alloc * sizeof(struct yy_buffer_state*) + ); + if ( ! (yy_buffer_stack) ) + YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); + + /* zero only the new slots.*/ + memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); + (yy_buffer_stack_max) = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) +{ + YY_BUFFER_STATE b; + + if ( size < 2 || + base[size-2] != YY_END_OF_BUFFER_CHAR || + base[size-1] != YY_END_OF_BUFFER_CHAR ) + /* They forgot to leave room for the EOB's. */ + return NULL; + + b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); + if ( ! b ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); + + b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = NULL; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + yy_switch_to_buffer( b ); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to yylex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * yy_scan_bytes() instead. + */ +YY_BUFFER_STATE yy_scan_string (const char * yystr ) +{ + + return yy_scan_bytes( yystr, (int) strlen(yystr) ); +} + +/** Setup the input buffer state to scan the given bytes. The next call to yylex() will + * scan from a @e copy of @a bytes. + * @param yybytes the byte buffer to scan + * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. + * + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = (yy_size_t) (_yybytes_len + 2); + buf = (char *) yyalloc( n ); + if ( ! buf ) + YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); + + for ( i = 0; i < _yybytes_len; ++i ) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; + + b = yy_scan_buffer( buf, n ); + if ( ! b ) + YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void yynoreturn yy_fatal_error (const char* msg ) +{ + fprintf( stderr, "%s\n", msg ); + exit( YY_EXIT_FAILURE ); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = (yy_hold_char); \ + (yy_c_buf_p) = yytext + yyless_macro_arg; \ + (yy_hold_char) = *(yy_c_buf_p); \ + *(yy_c_buf_p) = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the current line number. + * + */ +int yyget_lineno (void) +{ + + return yylineno; +} + +/** Get the input stream. + * + */ +FILE *yyget_in (void) +{ + return yyin; +} + +/** Get the output stream. + * + */ +FILE *yyget_out (void) +{ + return yyout; +} + +/** Get the length of the current token. + * + */ +int yyget_leng (void) +{ + return yyleng; +} + +/** Get the current token. + * + */ + +char *yyget_text (void) +{ + return yytext; +} + +/** Set the current line number. + * @param _line_number line number + * + */ +void yyset_lineno (int _line_number ) +{ + + yylineno = _line_number; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param _in_str A readable stream. + * + * @see yy_switch_to_buffer + */ +void yyset_in (FILE * _in_str ) +{ + yyin = _in_str ; +} + +void yyset_out (FILE * _out_str ) +{ + yyout = _out_str ; +} + +int yyget_debug (void) +{ + return yy_flex_debug; +} + +void yyset_debug (int _bdebug ) +{ + yy_flex_debug = _bdebug ; +} + +static int yy_init_globals (void) +{ + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from yylex_destroy(), so don't allocate here. + */ + + (yy_buffer_stack) = NULL; + (yy_buffer_stack_top) = 0; + (yy_buffer_stack_max) = 0; + (yy_c_buf_p) = NULL; + (yy_init) = 0; + (yy_start) = 0; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = NULL; + yyout = NULL; +#endif + + /* For future reference: Set errno on error, since we are called by + * yylex_init() + */ + return 0; +} + +/* yylex_destroy is for both reentrant and non-reentrant scanners. */ +int yylex_destroy (void) +{ + + /* Pop the buffer stack, destroying each element. */ + while(YY_CURRENT_BUFFER){ + yy_delete_buffer( YY_CURRENT_BUFFER ); + YY_CURRENT_BUFFER_LVALUE = NULL; + yypop_buffer_state(); + } + + /* Destroy the stack itself. */ + yyfree((yy_buffer_stack) ); + (yy_buffer_stack) = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * yylex() is called, initialization will occur. */ + yy_init_globals( ); + + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void yy_flex_strncpy (char* s1, const char * s2, int n ) +{ + + int i; + for ( i = 0; i < n; ++i ) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (const char * s ) +{ + int n; + for ( n = 0; s[n]; ++n ) + ; + + return n; +} +#endif + +void *yyalloc (yy_size_t size ) +{ + return malloc(size); +} + +void *yyrealloc (void * ptr, yy_size_t size ) +{ + + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return realloc(ptr, size); +} + +void yyfree (void * ptr ) +{ + free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +#line 76 "lexicalStructure.lex" + + diff --git a/lexicalStructure.lex b/lexicalStructure.lex index a79ebfd..86799c2 100644 --- a/lexicalStructure.lex +++ b/lexicalStructure.lex @@ -8,7 +8,9 @@ #include #include "typedefs.h" int line_number = 1, column_number = 1; - bool DEBUG = false; + #ifndef DEBUG + #define DEBUG 0 + #endif %} COM ([^*]|\*+[^)*])* diff --git a/runner b/runner new file mode 100755 index 0000000000000000000000000000000000000000..1af2d69cd79231bcee0f7ba1fc3fffd4f4a080ab GIT binary patch literal 31632 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 literal 0 HcmV?d00001 diff --git a/runner.o b/runner.o new file mode 100644 index 0000000000000000000000000000000000000000..00c2836f5eb4c7ad11fa80c9286bd62f68f1c66b GIT binary patch literal 4216 zcmbtWU1(fI6rN4mq}H@a>tAg}ZVS~Y%{6Ib(NgQyvgS(tqZlbzh@0KJ-EDX8E_d&> ziDlcu8uhXS1bt8t!6)%W3i?n*N>oTG6v=}vd8p7AA+>pk+K07O>iOo**^IY)@xeo8 zXXZQKIdkUBnYlTcdj8ptL_)A6#2&FcV^oM{&+<4ahe@$ktPy|oK6qo)3VyNbi-SS! zvK9Dq_1fixw~Kx|PY%;>hyR+@NX=RGnN?OpSi!jkmzjq3Q|pq zsc8kXk<}=ujd2=Z5BCA`8z1gPxhgHtCa%;{xP^|8gKYI7TWzRv3)h|wlT>eZ_`_D? zDKZm{HS$+(y5TQU#7oZwf9?&Itm((0p&XwndzbK5(0iAjxQADzMi87%Mu zL2AA+IuB&|7%9pgbwpP`4Q+{^x&qeO#{h8b0Yxg~4}-4HBoyxoQ-aiGs)G7LhxK82 za?7SospzsYb5`R8IH%J1k?q21SdCVIVs2WAxpTtw%139DE3oP2wQd#VzY;`StThAw zdLwncz7Tqswr%UKTUPqDl`79d6r4BG#X{C7I2GSBjupJTF|^Itvtyf4b`7WO7-qUy z$)}C9d)QblT#+s0a%?0rc{_7-tnB4&7j)%oEaV;&TeAlKc4Un$TdP}Eivik;2>l5$ zvTxrmqknYVcRb%18Zw8?!GR%PPKQox-);^LKcZkd03lXT>!XHh9eHt7P+`vi>!b#` zJM2W_%>yDa(U;iN)4l3Fy3e>mXpk=4hSb`=w>$Q&>FWGDK@_RmEww^y#>>#sZ)oWc zDg6j~)}MfNyuj58@f%)-+oZGYi-^6no}HG>Y8tJRyAL7k8M2nzdd-jA8)0`*L!P3t zkpS=?Rtb}PA*`QTJ3h+39lkRLM-JQZ_Y#hEIX;S z#^fZiiH7S#MwwEDAkUugM5bKyOU{_%m&R>Z6bp{c<6OlpI9`s3MSDWzGR1Ng&RsW? zcSR;$ES58vI+@BOMJ&Xy{0;9}7mfeI7m;MYhIeZ?&I5ugg?qsKBLGQ&qtqC80g|A8 z@1Vx`y8ubRhprhed+QT`B<$zWa4J4mJ-E0V?B}$?!M{_(XB7@U{^el)yu#W4HZ{MZ zdhqf6WB%_7Xa10y-%x#&zY-4s3HW+`?$>bS=Sh%A_+G$|o}Zl&KIeU}!ok<`uwUat z$N5ZaIM(HS7GwNWHNKwD;~EbCoS%0z9B&ij(;D8Z;qPlW-VNq|rs0V5AT`KW3dfr3 zs4@R*4PUR}=QTfi{1;>JpEW;tL)rhY8eiY<%^3bL4xEJRBp*)2ZiT~#URQ@ST)%e} z4cG78afPEpez*=l()joma{S+FxbFWa4aa|Y%)hST_i8wQXc52eXETBzffTVP5K{Wpz5VF^bd=iA9j4R;?i^MdXr=WPj-GR=cY@xisb)w z2AQLzkXv1nYT~H8u}+mAPsJu0A*aa}5)RIwct}n`NrJloTf9k-4Phr9q8@l;8SzCF zQ2glnICuDr(oZWuEw8M@SX&bsppM~FKYQre9^Y+UIDW?Pj>3MB0oC`bg}E+S&GB>p z3@Lcb9Q3b516Rr@_W_V5`!dxFFURev92qDeG=c+=b2pHlIAnk|M=`+op2 CgEuw+ literal 0 HcmV?d00001 diff --git a/test_comments.tok b/test_comments.tok new file mode 100644 index 0000000..2fb6907 --- /dev/null +++ b/test_comments.tok @@ -0,0 +1,9 @@ +1 1 700 "(* hello *)" +2 1 700 "(* hello *)" +3 1 700 "(* I'd think this is a legal "string" that contains several \n \t +escaped characters, isn't it? *)" +4 1 700 "(* \ *)" +5 1 700 "(* *)" +6 1 700 "(*{COMMENT}+ *)" +7 1 700 "(* * *)" +8 1 700 "(* (hello) *)" diff --git a/test_generalTokenTest.tok b/test_generalTokenTest.tok new file mode 100644 index 0000000..69b1571 --- /dev/null +++ b/test_generalTokenTest.tok @@ -0,0 +1,61 @@ +1 1 101 "This" +1 2 101 "is" +1 3 101 "a" +1 4 101 "test" +2 1 301 "9" +2 1 101 "combined" +2 2 301 "7" +2 2 101 "okens" +3 1 301 "12345" +4 1 301 "893247892" +5 1 101 "combined" +5 2 101 "DueToUnknownChar" +5 3 101 "_validtoken" +5 4 101 "__validtoken1" +5 5 101 "_valid_token2" +5 6 101 "validToken3_" +6 1 305 "true" +6 2 306 "false" +7 1 302 "null" +7 2 401 "while" +7 3 609 "!" +7 3 101 "wrong" +7 4 402 "if" +7 5 101 "when" +8 1 404 "else" +8 2 405 "type" +8 3 406 "function" +9 1 407 "return" +9 3 408 "external" +9 11 409 "as" +10 1 101 "string" +10 2 101 "_NOte_that_was_not_reserved" +11 7 508 ":" +11 7 507 ";" +11 7 509 "," +11 7 510 "->" +12 1 601 "+" +12 1 602 "-" +12 1 603 "*" +12 1 604 "/" +12 1 605 "%" +13 1 606 "<" +13 1 607 "=" +14 1 608 ":=" +15 2 101 "This" +15 3 101 "is" +15 4 101 "not" +15 5 101 "a" +15 6 101 "valid" +16 1 101 "String" +17 1 304 ""This is a valid String"" +18 1 609 "!" +18 1 611 "|" +19 1 612 "." +19 1 612 "." +20 1 700 "(* this is a comment *)" +21 2 603 "*" +21 2 101 "Not" +21 3 101 "a" +21 4 101 "comment" +22 3 610 "&" diff --git a/test_keywords.tok b/test_keywords.tok new file mode 100644 index 0000000..9e70321 --- /dev/null +++ b/test_keywords.tok @@ -0,0 +1,29 @@ +1 1 401 "while" +2 1 101 "While" +3 1 101 "whiLe" +4 1 402 "if" +5 1 101 "IF" +6 1 101 "If" +7 1 101 "iF" +8 1 403 "then" +9 1 101 "Then" +10 1 101 "theN" +11 1 404 "else" +12 1 101 "eLse" +13 1 101 "elSe" +14 1 101 "Else" +15 1 405 "type" +16 1 101 "Type" +17 1 101 "tyPe" +18 1 406 "function" +19 1 101 "Function" +20 1 101 "functioN" +21 1 407 "return" +22 1 101 "Return" +23 1 101 "returN" +24 1 408 "external" +25 1 101 "External" +26 1 101 "exteRnal" +27 1 409 "as" +28 1 101 "As" +29 1 101 "aS" diff --git a/test_operators.tok b/test_operators.tok new file mode 100644 index 0000000..9ca0302 --- /dev/null +++ b/test_operators.tok @@ -0,0 +1,22 @@ +1 1 601 "+" +2 1 602 "-" +3 1 603 "*" +4 1 604 "/" +6 1 605 "%" +7 1 606 "<" +9 1 607 "=" +10 1 608 ":=" +11 1 607 "=" +11 1 508 ":" +12 1 508 ":" +13 1 607 "=" +14 1 609 "!" +15 1 610 "&" +16 1 611 "|" +17 1 612 "." +18 1 101 "relEASE" +19 1 614 "release" +20 1 101 "RELEASE" +21 1 613 "reserve" +22 1 101 "RESERVE" +23 1 101 "reSERVe" diff --git a/test_otherpunc.tok b/test_otherpunc.tok new file mode 100644 index 0000000..005f61c --- /dev/null +++ b/test_otherpunc.tok @@ -0,0 +1,7 @@ +1 1 507 ";" +2 1 508 ":" +3 1 509 "," +4 1 510 "->" +5 1 510 "->" +6 1 602 "-" +6 1 510 "->" diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok new file mode 100644 index 0000000..2bdbdd3 --- /dev/null +++ b/test_simpleIntTest.tok @@ -0,0 +1,3 @@ +1 1 301 "45" +2 1 301 "123" +3 1 301 "8392" diff --git a/test_simpleLiterals.tok b/test_simpleLiterals.tok new file mode 100644 index 0000000..51f07e1 --- /dev/null +++ b/test_simpleLiterals.tok @@ -0,0 +1,62 @@ +1 1 304 ""this is a string"" +1 2 301 "721398" +1 3 303 "'g'" +1 5 604 "/" +1 5 101 "n" +1 7 700 "(* should print 3 tokens before this *)" +4 1 301 "12893" +4 3 101 "this" +4 4 101 "is" +4 5 101 "not" +4 6 101 "a" +4 7 101 "string" +4 8 700 "(*one valid token before this*)" +5 1 700 "(* spacey comment here +over multiple lines +will it work? *)" +9 1 306 "false" +10 1 700 "(**)" +12 1 101 "nullfalse" +13 2 101 "nulltrue" +14 1 302 "null" +15 1 303 "'7'" +16 1 305 "true" +17 2 301 "189" +18 1 303 "'\t'" +19 1 303 "'"'" +20 1 303 "'/'" +21 1 303 "'\n'" +22 1 303 "'\''" +23 1 303 "'\t'" +25 1 303 "'n'" +27 2 101 "fdsf" +28 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" +33 1 304 ""STRINGwithnotSPaces"" +34 1 303 "' '" +36 1 304 ""J"" +37 1 304 """" +38 1 304 "" "" +40 1 304 ""{SCHAR}"" +41 1 304 ""SCHAR"" +42 1 304 ""[SCHAR]"" +43 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" +44 2 101 "I" +44 3 101 "d" +44 4 101 "think" +44 5 101 "this" +44 6 101 "is" +44 7 101 "a" +44 8 101 "legal" +44 11 101 "string" +44 14 101 "that" +44 15 101 "contains" +44 16 101 "several" +44 19 101 "n" +44 21 101 "t" +44 22 101 "escaped" +44 23 101 "characters" +44 23 509 "," +44 24 101 "isn" +44 25 101 "t" +44 26 101 "it" +45 1 101 "nullLike" From 3c6d3be9b403cedd51bc8d101310429289f86aec Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 19:28:38 -0500 Subject: [PATCH 4/6] testing int with yyleng --- flex.o | Bin 27880 -> 27952 bytes lex.yy.c | 2 +- lexicalStructure.lex | 2 +- runner | Bin 31632 -> 31632 bytes test_simpleIntTest.tok | 5 +++++ tests/test_simpleIntTest.alpha | 3 ++- 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/flex.o b/flex.o index c0c6827f98437382a2536fac1e48819a8616fb92..ca2157c706aba473e84b983141b9b06e00cd79b0 100644 GIT binary patch delta 5715 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 BwFm$J delta 5683 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 tz3ndtm#cURc+6!e1{{eNhnqvR} diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok index 2bdbdd3..e7925f5 100644 --- a/test_simpleIntTest.tok +++ b/test_simpleIntTest.tok @@ -1,3 +1,8 @@ 1 1 301 "45" 2 1 301 "123" 3 1 301 "8392" +4 1 301 "40" +4 2 301 "40" +5 2 301 "200" +5 3 301 "50" +5 4 301 "21783" diff --git a/tests/test_simpleIntTest.alpha b/tests/test_simpleIntTest.alpha index 507ec22..127f0a6 100644 --- a/tests/test_simpleIntTest.alpha +++ b/tests/test_simpleIntTest.alpha @@ -1,4 +1,5 @@ 45 123 8392 - +40 40 + 200 50 21783 From 52a7c69dae50ecabe8d4a123ff9deac4a75854a3 Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 20:02:42 -0500 Subject: [PATCH 5/6] updated comment count --- flex.o | Bin 27952 -> 27880 bytes lex.yy.c | 2 +- lexicalStructure.lex | 2 +- runner | Bin 31632 -> 31632 bytes runner.c | 11 +++ runner.h | 3 +- runner.o | Bin 4216 -> 4616 bytes test_comments.tok | 10 +-- test_generalTokenTest.tok | 78 +++++++++++----------- test_operators.tok | 2 +- test_otherpunc.tok | 2 +- test_simpleIntTest.tok | 6 +- test_simpleLiterals.tok | 115 ++++++++++++++++---------------- tests/test_simpleLiterals.alpha | 2 +- 14 files changed, 123 insertions(+), 110 deletions(-) diff --git a/flex.o b/flex.o index ca2157c706aba473e84b983141b9b06e00cd79b0..c0c6827f98437382a2536fac1e48819a8616fb92 100644 GIT binary patch delta 5683 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 BwFm$J diff --git a/lex.yy.c b/lex.yy.c index 683e3bd..09a71bf 100644 --- a/lex.yy.c +++ b/lex.yy.c @@ -824,7 +824,7 @@ do_action: /* This label is used only to access EOF actions. */ case 1: YY_RULE_SETUP #line 27 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {column_number=column_number+yyleng; return T_INTEGER;}} +{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} YY_BREAK case 2: YY_RULE_SETUP diff --git a/lexicalStructure.lex b/lexicalStructure.lex index ef6b184..86799c2 100644 --- a/lexicalStructure.lex +++ b/lexicalStructure.lex @@ -23,7 +23,7 @@ SCHAR \\n|\\t|\\\"|[^\"\n\\] %% -"integer" {if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {column_number=column_number+yyleng; return T_INTEGER;}} +"integer" {if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} "address" {if(DEBUG) {printf( "T_ADDRESS: %s (%d)\n", yytext, T_ADDRESS);} else {return T_ADDRESS;}} "Boolean" {if(DEBUG) {printf( "T_BOOLEAN: %s (%d)\n", yytext, T_BOOLEAN);} else {return T_BOOLEAN;}} "character" {if(DEBUG) {printf( "T_CHARACTER: %s (%d)\n", yytext, T_CHARACTER);} else {return T_CHARACTER;}} diff --git a/runner b/runner index 967e827fd228e7dc0778c47cb1d2f599a38f4ba5..067c50734e81c7aca4d80ecc4986f74a57d26c20 100755 GIT binary patch delta 6701 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 diff --git a/runner.c b/runner.c index 8567aea..30f7551 100644 --- a/runner.c +++ b/runner.c @@ -26,6 +26,17 @@ int main(int argc, char *argv[]) { if (arg == TOK_ARG) { fprintf(output, "%d %d %3d \"%s\"\n", line_number, column_number, token, yytext); } + if(token == COMMENT){ + for (int i = 0; i < yyleng; i++) { + if(yytext[i] == '\n'){ + line_number++; + column_number = 0; + } + column_number++; + } + continue; + } + column_number += yyleng; } if (yyin != NULL) { diff --git a/runner.h b/runner.h index 07ec277..b7c7369 100644 --- a/runner.h +++ b/runner.h @@ -14,6 +14,7 @@ #include #include #include "flex.h" +#include "typedefs.h" extern int line_number, column_number; extern char *yytext; @@ -22,4 +23,4 @@ int arg; int main(int argc, char* argv[]); char *is_tok(int argc, char* argv[]); -int is_alpha_file(char *file, int file_len); \ No newline at end of file +int is_alpha_file(char *file, int file_len); diff --git a/runner.o b/runner.o index 00c2836f5eb4c7ad11fa80c9286bd62f68f1c66b..6778a689da82ad0f00fa83c9b9985ff9dd0930ef 100644 GIT binary patch delta 1092 zcmZ{jPiPZS5XRrUWV6jCyPK`8o4pi;LTu@wy%-hg`iF(!$=q6Rz38cuLrV;_E^Vl^ zMzG0%h$14rND(PStb&NQdgviS5A`G-glI!gLUNGC_p%904;^^B!|(gv%)I4o>&)u# z`Z>O8lt(L^@$%<1&qKL6$FqR5a6|e1jxmNG!S$CG8=p91^HV!sT`+cVEmInlNy)2c zo@StCzGs)Ud8edESo{KOon)u;?D&ogMXwHl_o7!{s2&V-t94vZ3wC!pt$B^&Vqb%q zE0@~sb~VB`K@5U#Lx+iFkuc9lJmA;$NT|T^O?VfUv7n@2179h5kvox>;Ny~FV=a<| zM>4CZNqCN+BENeFAFCtPZFPjhef$}}R`9NfyY}>~P zp*D!B619mlG20&u2_!gB#j?I|m>~=kJP?^q( zC1VfI#$9o}XX3WF>V^0Z_=D4WTAS(%^qhjv^z$%^-;5Nt^duh(W4|#8l3<&6Lv6HwfhPoRy-nU{_EFXLn#)-#N3lYg?RGpbKkWGe@HUim`Cp!Y! z%O^kN60hIF2(q4mfdz;Kf%wmV2-t}vE`%h05-JXI95<5qRUG1Xk<1ZBQvV7fKDnJs zQ1UkpH71iM@`y{?fUE)nkPCT%80Ny5$p?Y51xT{&NV3(FKLTZEBFTy%$?gH^HN1i( zD~crh1xZ{CNt|J_BCj~3;^anNamfH?pac+rl!BPKAPx{jOy0$xhXVFY7Ce)c1noFKfI" +11 8 507 ";" +11 9 509 "," +11 10 510 "->" 12 1 601 "+" -12 1 602 "-" -12 1 603 "*" -12 1 604 "/" -12 1 605 "%" +12 2 602 "-" +12 3 603 "*" +12 4 604 "/" +12 5 605 "%" 13 1 606 "<" -13 1 607 "=" +13 2 607 "=" 14 1 608 ":=" 15 2 101 "This" -15 3 101 "is" -15 4 101 "not" -15 5 101 "a" -15 6 101 "valid" +15 7 101 "is" +15 10 101 "not" +15 14 101 "a" +15 16 101 "valid" 16 1 101 "String" 17 1 304 ""This is a valid String"" 18 1 609 "!" -18 1 611 "|" -19 1 612 "." +18 2 611 "|" 19 1 612 "." +19 2 612 "." 20 1 700 "(* this is a comment *)" 21 2 603 "*" -21 2 101 "Not" -21 3 101 "a" -21 4 101 "comment" +21 3 101 "Not" +21 7 101 "a" +21 9 101 "comment" 22 3 610 "&" diff --git a/test_operators.tok b/test_operators.tok index 9ca0302..dd3eaab 100644 --- a/test_operators.tok +++ b/test_operators.tok @@ -7,7 +7,7 @@ 9 1 607 "=" 10 1 608 ":=" 11 1 607 "=" -11 1 508 ":" +11 2 508 ":" 12 1 508 ":" 13 1 607 "=" 14 1 609 "!" diff --git a/test_otherpunc.tok b/test_otherpunc.tok index 005f61c..7500378 100644 --- a/test_otherpunc.tok +++ b/test_otherpunc.tok @@ -4,4 +4,4 @@ 4 1 510 "->" 5 1 510 "->" 6 1 602 "-" -6 1 510 "->" +6 2 510 "->" diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok index e7925f5..0bcbefb 100644 --- a/test_simpleIntTest.tok +++ b/test_simpleIntTest.tok @@ -2,7 +2,7 @@ 2 1 301 "123" 3 1 301 "8392" 4 1 301 "40" -4 2 301 "40" +4 4 301 "40" 5 2 301 "200" -5 3 301 "50" -5 4 301 "21783" +5 6 301 "50" +5 9 301 "21783" diff --git a/test_simpleLiterals.tok b/test_simpleLiterals.tok index 51f07e1..7e38bb3 100644 --- a/test_simpleLiterals.tok +++ b/test_simpleLiterals.tok @@ -1,62 +1,63 @@ 1 1 304 ""this is a string"" -1 2 301 "721398" -1 3 303 "'g'" -1 5 604 "/" -1 5 101 "n" -1 7 700 "(* should print 3 tokens before this *)" +1 20 301 "721398" +1 27 303 "'g'" +1 32 604 "/" +1 33 101 "n" +1 36 700 "(* should print 3 tokens before this *)" 4 1 301 "12893" -4 3 101 "this" -4 4 101 "is" -4 5 101 "not" -4 6 101 "a" -4 7 101 "string" -4 8 700 "(*one valid token before this*)" +4 8 101 "this" +4 13 101 "is" +4 16 101 "not" +4 20 101 "a" +4 22 101 "string" +4 29 700 "(*one valid token before this*)" 5 1 700 "(* spacey comment here over multiple lines will it work? *)" -9 1 306 "false" -10 1 700 "(**)" -12 1 101 "nullfalse" -13 2 101 "nulltrue" -14 1 302 "null" -15 1 303 "'7'" -16 1 305 "true" -17 2 301 "189" -18 1 303 "'\t'" -19 1 303 "'"'" -20 1 303 "'/'" -21 1 303 "'\n'" -22 1 303 "'\''" -23 1 303 "'\t'" -25 1 303 "'n'" -27 2 101 "fdsf" -28 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" -33 1 304 ""STRINGwithnotSPaces"" -34 1 303 "' '" -36 1 304 ""J"" -37 1 304 """" -38 1 304 "" "" -40 1 304 ""{SCHAR}"" -41 1 304 ""SCHAR"" -42 1 304 ""[SCHAR]"" -43 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" -44 2 101 "I" -44 3 101 "d" -44 4 101 "think" -44 5 101 "this" -44 6 101 "is" -44 7 101 "a" -44 8 101 "legal" -44 11 101 "string" -44 14 101 "that" -44 15 101 "contains" -44 16 101 "several" -44 19 101 "n" -44 21 101 "t" -44 22 101 "escaped" -44 23 101 "characters" -44 23 509 "," -44 24 101 "isn" -44 25 101 "t" -44 26 101 "it" -45 1 101 "nullLike" +7 18 306 "false" +11 1 306 "false" +12 1 700 "(**)" +14 1 101 "nullfalse" +15 2 101 "nulltrue" +16 1 302 "null" +17 1 303 "'7'" +18 1 305 "true" +19 2 301 "189" +20 1 303 "'\t'" +21 1 303 "'"'" +22 1 303 "'/'" +23 1 303 "'\n'" +24 1 303 "'\''" +25 1 303 "'\t'" +27 1 303 "'n'" +29 2 101 "fdsf" +30 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" +35 1 304 ""STRINGwithnotSPaces"" +36 1 303 "' '" +38 1 304 ""J"" +39 1 304 """" +40 1 304 "" "" +42 1 304 ""{SCHAR}"" +43 1 304 ""SCHAR"" +44 1 304 ""[SCHAR]"" +45 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" +46 2 101 "I" +46 4 101 "d" +46 6 101 "think" +46 12 101 "this" +46 17 101 "is" +46 20 101 "a" +46 22 101 "legal" +46 30 101 "string" +46 39 101 "that" +46 44 101 "contains" +46 53 101 "several" +46 63 101 "n" +46 66 101 "t" +46 68 101 "escaped" +46 76 101 "characters" +46 86 509 "," +46 88 101 "isn" +46 92 101 "t" +46 94 101 "it" +47 1 101 "nullLike" diff --git a/tests/test_simpleLiterals.alpha b/tests/test_simpleLiterals.alpha index fd54099..4c5b0b2 100644 --- a/tests/test_simpleLiterals.alpha +++ b/tests/test_simpleLiterals.alpha @@ -4,7 +4,7 @@ 12893 "this is not a string (*one valid token before this*) (* spacey comment here over multiple lines -will it work? *) +will it work? *) false " ''' '\' From 292a8dbf8dbac9b634f9661c8a499799f169fe20 Mon Sep 17 00:00:00 2001 From: Partho Bhattacharya Date: Thu, 13 Feb 2025 20:24:39 -0500 Subject: [PATCH 6/6] tested lexer with more files --- flex.h | 477 --------- flex.o | Bin 27880 -> 0 bytes lex.yy.c | 2043 ------------------------------------- lexicalStructure.lex | 2 +- runner | Bin 31632 -> 0 bytes runner.o | Bin 4616 -> 0 bytes test_comments.tok | 9 - test_generalTokenTest.tok | 61 -- test_keywords.tok | 29 - test_operators.tok | 22 - test_otherpunc.tok | 7 - test_simpleIntTest.tok | 8 - test_simpleLiterals.tok | 63 -- 13 files changed, 1 insertion(+), 2720 deletions(-) delete mode 100644 flex.h delete mode 100644 flex.o delete mode 100644 lex.yy.c delete mode 100755 runner delete mode 100644 runner.o delete mode 100644 test_comments.tok delete mode 100644 test_generalTokenTest.tok delete mode 100644 test_keywords.tok delete mode 100644 test_operators.tok delete mode 100644 test_otherpunc.tok delete mode 100644 test_simpleIntTest.tok delete mode 100644 test_simpleLiterals.tok diff --git a/flex.h b/flex.h deleted file mode 100644 index c528013..0000000 --- a/flex.h +++ /dev/null @@ -1,477 +0,0 @@ -#ifndef yyHEADER_H -#define yyHEADER_H 1 -#define yyIN_HEADER 1 - -#line 6 "flex.h" - -#line 8 "flex.h" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 6 -#define YY_FLEX_SUBMINOR_VERSION 4 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP - -extern int yylineno; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -#ifdef YY_HEADER_EXPORT_START_CONDITIONS -#define INITIAL 0 - -#endif - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - -#undef YY_NEW_FILE -#undef YY_FLUSH_BUFFER -#undef yy_set_bol -#undef yy_new_buffer -#undef yy_set_interactive -#undef YY_DO_BEFORE_ACTION - -#ifdef YY_DECL_IS_OURS -#undef YY_DECL_IS_OURS -#undef YY_DECL -#endif - -#ifndef yy_create_buffer_ALREADY_DEFINED -#undef yy_create_buffer -#endif -#ifndef yy_delete_buffer_ALREADY_DEFINED -#undef yy_delete_buffer -#endif -#ifndef yy_scan_buffer_ALREADY_DEFINED -#undef yy_scan_buffer -#endif -#ifndef yy_scan_string_ALREADY_DEFINED -#undef yy_scan_string -#endif -#ifndef yy_scan_bytes_ALREADY_DEFINED -#undef yy_scan_bytes -#endif -#ifndef yy_init_buffer_ALREADY_DEFINED -#undef yy_init_buffer -#endif -#ifndef yy_flush_buffer_ALREADY_DEFINED -#undef yy_flush_buffer -#endif -#ifndef yy_load_buffer_state_ALREADY_DEFINED -#undef yy_load_buffer_state -#endif -#ifndef yy_switch_to_buffer_ALREADY_DEFINED -#undef yy_switch_to_buffer -#endif -#ifndef yypush_buffer_state_ALREADY_DEFINED -#undef yypush_buffer_state -#endif -#ifndef yypop_buffer_state_ALREADY_DEFINED -#undef yypop_buffer_state -#endif -#ifndef yyensure_buffer_stack_ALREADY_DEFINED -#undef yyensure_buffer_stack -#endif -#ifndef yylex_ALREADY_DEFINED -#undef yylex -#endif -#ifndef yyrestart_ALREADY_DEFINED -#undef yyrestart -#endif -#ifndef yylex_init_ALREADY_DEFINED -#undef yylex_init -#endif -#ifndef yylex_init_extra_ALREADY_DEFINED -#undef yylex_init_extra -#endif -#ifndef yylex_destroy_ALREADY_DEFINED -#undef yylex_destroy -#endif -#ifndef yyget_debug_ALREADY_DEFINED -#undef yyget_debug -#endif -#ifndef yyset_debug_ALREADY_DEFINED -#undef yyset_debug -#endif -#ifndef yyget_extra_ALREADY_DEFINED -#undef yyget_extra -#endif -#ifndef yyset_extra_ALREADY_DEFINED -#undef yyset_extra -#endif -#ifndef yyget_in_ALREADY_DEFINED -#undef yyget_in -#endif -#ifndef yyset_in_ALREADY_DEFINED -#undef yyset_in -#endif -#ifndef yyget_out_ALREADY_DEFINED -#undef yyget_out -#endif -#ifndef yyset_out_ALREADY_DEFINED -#undef yyset_out -#endif -#ifndef yyget_leng_ALREADY_DEFINED -#undef yyget_leng -#endif -#ifndef yyget_text_ALREADY_DEFINED -#undef yyget_text -#endif -#ifndef yyget_lineno_ALREADY_DEFINED -#undef yyget_lineno -#endif -#ifndef yyset_lineno_ALREADY_DEFINED -#undef yyset_lineno -#endif -#ifndef yyget_column_ALREADY_DEFINED -#undef yyget_column -#endif -#ifndef yyset_column_ALREADY_DEFINED -#undef yyset_column -#endif -#ifndef yywrap_ALREADY_DEFINED -#undef yywrap -#endif -#ifndef yyget_lval_ALREADY_DEFINED -#undef yyget_lval -#endif -#ifndef yyset_lval_ALREADY_DEFINED -#undef yyset_lval -#endif -#ifndef yyget_lloc_ALREADY_DEFINED -#undef yyget_lloc -#endif -#ifndef yyset_lloc_ALREADY_DEFINED -#undef yyset_lloc -#endif -#ifndef yyalloc_ALREADY_DEFINED -#undef yyalloc -#endif -#ifndef yyrealloc_ALREADY_DEFINED -#undef yyrealloc -#endif -#ifndef yyfree_ALREADY_DEFINED -#undef yyfree -#endif -#ifndef yytext_ALREADY_DEFINED -#undef yytext -#endif -#ifndef yyleng_ALREADY_DEFINED -#undef yyleng -#endif -#ifndef yyin_ALREADY_DEFINED -#undef yyin -#endif -#ifndef yyout_ALREADY_DEFINED -#undef yyout -#endif -#ifndef yy_flex_debug_ALREADY_DEFINED -#undef yy_flex_debug -#endif -#ifndef yylineno_ALREADY_DEFINED -#undef yylineno -#endif -#ifndef yytables_fload_ALREADY_DEFINED -#undef yytables_fload -#endif -#ifndef yytables_destroy_ALREADY_DEFINED -#undef yytables_destroy -#endif -#ifndef yyTABLES_NAME_ALREADY_DEFINED -#undef yyTABLES_NAME -#endif - -#line 76 "lexicalStructure.lex" - - -#line 476 "flex.h" -#undef yyIN_HEADER -#endif /* yyHEADER_H */ diff --git a/flex.o b/flex.o deleted file mode 100644 index c0c6827f98437382a2536fac1e48819a8616fb92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27880 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 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#ifndef SIZE_MAX -#define SIZE_MAX (~(size_t)0) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -/* begin standard C++ headers. */ - -/* TODO: this is always defined, so inline it */ -#define yyconst const - -#if defined(__GNUC__) && __GNUC__ >= 3 -#define yynoreturn __attribute__((__noreturn__)) -#else -#define yynoreturn -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an - * integer in range [0..255] for use as an array index. - */ -#define YY_SC_TO_UI(c) ((YY_CHAR) (c)) - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN (yy_start) = 1 + 2 * -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START (((yy_start) - 1) / 2) -#define YYSTATE YY_START -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE yyrestart( yyin ) -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -extern int yyleng; - -extern FILE *yyin, *yyout; - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - #define YY_LINENO_REWIND_TO(ptr) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = (yy_hold_char); \ - YY_RESTORE_YY_MORE_OFFSET \ - (yy_c_buf_p) = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) -#define unput(c) yyunput( c, (yytext_ptr) ) - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - int yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via yyrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* Stack of input buffers. */ -static size_t yy_buffer_stack_top = 0; /**< index of top of stack. */ -static size_t yy_buffer_stack_max = 0; /**< capacity of stack. */ -static YY_BUFFER_STATE * yy_buffer_stack = NULL; /**< Stack as an array. */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( (yy_buffer_stack) \ - ? (yy_buffer_stack)[(yy_buffer_stack_top)] \ - : NULL) -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE (yy_buffer_stack)[(yy_buffer_stack_top)] - -/* yy_hold_char holds the character lost when yytext is formed. */ -static char yy_hold_char; -static int yy_n_chars; /* number of characters read into yy_ch_buf */ -int yyleng; - -/* Points to current character in buffer. */ -static char *yy_c_buf_p = NULL; -static int yy_init = 0; /* whether we need to initialize */ -static int yy_start = 0; /* start state number */ - -/* Flag which is used to allow yywrap()'s to do buffer switches - * instead of setting up a fresh yyin. A bit of a hack ... - */ -static int yy_did_buffer_switch_on_eof; - -void yyrestart ( FILE *input_file ); -void yy_switch_to_buffer ( YY_BUFFER_STATE new_buffer ); -YY_BUFFER_STATE yy_create_buffer ( FILE *file, int size ); -void yy_delete_buffer ( YY_BUFFER_STATE b ); -void yy_flush_buffer ( YY_BUFFER_STATE b ); -void yypush_buffer_state ( YY_BUFFER_STATE new_buffer ); -void yypop_buffer_state ( void ); - -static void yyensure_buffer_stack ( void ); -static void yy_load_buffer_state ( void ); -static void yy_init_buffer ( YY_BUFFER_STATE b, FILE *file ); -#define YY_FLUSH_BUFFER yy_flush_buffer( YY_CURRENT_BUFFER ) - -YY_BUFFER_STATE yy_scan_buffer ( char *base, yy_size_t size ); -YY_BUFFER_STATE yy_scan_string ( const char *yy_str ); -YY_BUFFER_STATE yy_scan_bytes ( const char *bytes, int len ); - -void *yyalloc ( yy_size_t ); -void *yyrealloc ( void *, yy_size_t ); -void yyfree ( void * ); - -#define yy_new_buffer yy_create_buffer -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - yyensure_buffer_stack (); \ - YY_CURRENT_BUFFER_LVALUE = \ - yy_create_buffer( yyin, YY_BUF_SIZE ); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -#define yywrap() (/*CONSTCOND*/1) -#define YY_SKIP_YYWRAP -typedef flex_uint8_t YY_CHAR; - -FILE *yyin = NULL, *yyout = NULL; - -typedef int yy_state_type; - -extern int yylineno; -int yylineno = 1; - -extern char *yytext; -#ifdef yytext_ptr -#undef yytext_ptr -#endif -#define yytext_ptr yytext - -static yy_state_type yy_get_previous_state ( void ); -static yy_state_type yy_try_NUL_trans ( yy_state_type current_state ); -static int yy_get_next_buffer ( void ); -static void yynoreturn yy_fatal_error ( const char* msg ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - (yytext_ptr) = yy_bp; \ - yyleng = (int) (yy_cp - yy_bp); \ - (yy_hold_char) = *yy_cp; \ - *yy_cp = '\0'; \ - (yy_c_buf_p) = yy_cp; -#define YY_NUM_RULES 42 -#define YY_END_OF_BUFFER 43 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static const flex_int16_t yy_accept[131] = - { 0, - 0, 0, 43, 41, 40, 24, 41, 20, 25, 41, - 41, 18, 16, 30, 17, 27, 19, 32, 29, 28, - 21, 22, 39, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 26, 0, 34, 0, 0, 0, 0, - 31, 32, 23, 39, 39, 39, 13, 39, 39, 39, - 39, 39, 6, 39, 39, 39, 39, 39, 39, 39, - 33, 0, 0, 39, 39, 39, 39, 39, 39, 39, - 39, 39, 39, 39, 39, 39, 39, 39, 39, 35, - 0, 39, 39, 39, 8, 39, 39, 39, 39, 38, - 39, 39, 39, 7, 36, 9, 39, 39, 39, 39, - - 39, 37, 39, 39, 39, 39, 39, 5, 39, 39, - 39, 39, 39, 39, 39, 39, 11, 3, 2, 39, - 39, 39, 1, 14, 15, 39, 12, 10, 4, 0 - } ; - -static const YY_CHAR yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 4, 5, 1, 1, 6, 7, 8, 9, - 10, 11, 12, 13, 14, 15, 16, 17, 17, 17, - 17, 17, 17, 17, 17, 17, 17, 18, 19, 20, - 21, 22, 1, 1, 23, 24, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, - 1, 25, 1, 1, 23, 1, 26, 23, 27, 28, - - 29, 30, 31, 32, 33, 23, 23, 34, 23, 35, - 36, 37, 23, 38, 39, 40, 41, 42, 43, 44, - 45, 23, 1, 46, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static const YY_CHAR yy_meta[47] = - { 0, - 1, 2, 3, 1, 1, 1, 1, 2, 1, 1, - 1, 1, 1, 1, 1, 1, 4, 1, 1, 1, - 1, 1, 4, 4, 1, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - 4, 4, 4, 4, 4, 1 - } ; - -static const flex_int16_t yy_base[135] = - { 0, - 0, 0, 160, 161, 161, 161, 42, 161, 161, 134, - 147, 161, 161, 161, 135, 161, 161, 139, 134, 161, - 161, 161, 0, 118, 20, 121, 16, 23, 21, 111, - 122, 20, 118, 161, 48, 161, 49, 141, 47, 137, - 161, 130, 161, 0, 110, 117, 0, 118, 104, 102, - 107, 105, 0, 99, 104, 23, 108, 95, 98, 101, - 161, 122, 58, 98, 93, 92, 100, 99, 88, 99, - 96, 90, 94, 93, 80, 85, 90, 89, 83, 161, - 60, 87, 86, 88, 0, 75, 83, 71, 79, 0, - 83, 70, 69, 0, 0, 0, 77, 79, 65, 76, - - 67, 0, 63, 66, 53, 46, 51, 0, 50, 44, - 41, 54, 43, 40, 48, 47, 0, 0, 0, 46, - 40, 37, 0, 0, 0, 28, 0, 0, 0, 161, - 89, 93, 57, 97 - } ; - -static const flex_int16_t yy_def[135] = - { 0, - 130, 1, 130, 130, 130, 130, 131, 130, 130, 132, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 130, 131, 130, 130, 130, 130, 134, - 130, 130, 130, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 130, 134, 134, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 130, - 134, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, - 133, 133, 133, 133, 133, 133, 133, 133, 133, 0, - 130, 130, 130, 130 - } ; - -static const flex_int16_t yy_nxt[208] = - { 0, - 4, 4, 5, 6, 7, 8, 9, 10, 11, 4, - 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, - 22, 4, 23, 24, 4, 25, 26, 23, 27, 28, - 23, 23, 29, 23, 30, 23, 23, 31, 23, 32, - 23, 23, 33, 23, 23, 34, 36, 46, 51, 49, - 53, 57, 36, 35, 38, 54, 73, 58, 47, 50, - 44, 74, 75, 52, 59, 129, 37, 80, 81, 130, - 81, 128, 37, 127, 126, 125, 124, 123, 122, 121, - 120, 38, 119, 35, 118, 117, 38, 116, 35, 35, - 35, 115, 35, 38, 114, 113, 38, 62, 62, 62, - - 62, 112, 111, 110, 109, 108, 107, 106, 105, 104, - 103, 102, 101, 100, 99, 98, 97, 96, 95, 94, - 93, 92, 91, 90, 89, 88, 87, 86, 85, 84, - 83, 82, 63, 79, 78, 77, 76, 72, 71, 70, - 69, 68, 67, 66, 65, 64, 42, 63, 61, 60, - 56, 55, 48, 45, 43, 42, 41, 40, 39, 130, - 3, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130 - } ; - -static const flex_int16_t yy_chk[208] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 7, 25, 28, 27, - 29, 32, 35, 37, 39, 29, 56, 32, 25, 27, - 133, 56, 56, 28, 32, 126, 7, 63, 63, 81, - 81, 122, 35, 121, 120, 116, 115, 114, 113, 112, - 111, 39, 110, 37, 109, 107, 39, 106, 37, 131, - 131, 105, 131, 132, 104, 103, 132, 134, 134, 134, - - 134, 101, 100, 99, 98, 97, 93, 92, 91, 89, - 88, 87, 86, 84, 83, 82, 79, 78, 77, 76, - 75, 74, 73, 72, 71, 70, 69, 68, 67, 66, - 65, 64, 62, 60, 59, 58, 57, 55, 54, 52, - 51, 50, 49, 48, 46, 45, 42, 40, 38, 33, - 31, 30, 26, 24, 19, 18, 15, 11, 10, 3, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, - - 130, 130, 130, 130, 130, 130, 130 - } ; - -static yy_state_type yy_last_accepting_state; -static char *yy_last_accepting_cpos; - -extern int yy_flex_debug; -int yy_flex_debug = 0; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -char *yytext; -#line 1 "lexicalStructure.lex" -/* Lexical Analysis with Flex (1.6.0) We used some of the code from this manual */ -/* so we placed the citation here. */ -/* definitions */ -#line 8 "lexicalStructure.lex" - #include - #include "typedefs.h" - int line_number = 1, column_number = 1; - #ifndef DEBUG - #define DEBUG 0 - #endif -#line 544 "lex.yy.c" -#line 21 "lexicalStructure.lex" - /* char can be a newline, tab, an escaped quote, or anything but a single quote, an actual line break, an actual tab, or a backslash by itself (to prevent confusion from escaped quote */ - /* similar to above, a string Char (SCHAR) is the same as a CHAR except we cannot have double quotes instead of single quotes. Double quotes need to be escaped in Flex unlike single quotes based on documentation */ -#line 548 "lex.yy.c" - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#ifndef YY_EXTRA_TYPE -#define YY_EXTRA_TYPE void * -#endif - -static int yy_init_globals ( void ); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int yylex_destroy ( void ); - -int yyget_debug ( void ); - -void yyset_debug ( int debug_flag ); - -YY_EXTRA_TYPE yyget_extra ( void ); - -void yyset_extra ( YY_EXTRA_TYPE user_defined ); - -FILE *yyget_in ( void ); - -void yyset_in ( FILE * _in_str ); - -FILE *yyget_out ( void ); - -void yyset_out ( FILE * _out_str ); - - int yyget_leng ( void ); - -char *yyget_text ( void ); - -int yyget_lineno ( void ); - -void yyset_lineno ( int _line_number ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int yywrap ( void ); -#else -extern int yywrap ( void ); -#endif -#endif - -#ifndef YY_NO_UNPUT - - static void yyunput ( int c, char *buf_ptr ); - -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy ( char *, const char *, int ); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen ( const char * ); -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus -static int yyinput ( void ); -#else -static int input ( void ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, (size_t) yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - int n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = (int) fread(buf, 1, (yy_size_t) max_size, yyin)) == 0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg ) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int yylex (void); - -#define YY_DECL int yylex (void) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK /*LINTED*/break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - yy_state_type yy_current_state; - char *yy_cp, *yy_bp; - int yy_act; - - if ( !(yy_init) ) - { - (yy_init) = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! (yy_start) ) - (yy_start) = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_load_buffer_state( ); - } - - { -#line 25 "lexicalStructure.lex" - - -#line 768 "lex.yy.c" - - while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */ - { - yy_cp = (yy_c_buf_p); - - /* Support of yytext. */ - *yy_cp = (yy_hold_char); - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = (yy_start); -yy_match: - do - { - YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 161 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = (yy_hold_char); - yy_cp = (yy_last_accepting_cpos); - yy_current_state = (yy_last_accepting_state); - goto yy_find_action; - -case 1: -YY_RULE_SETUP -#line 27 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_INTEGER: %s (%d)\n", yytext, T_INTEGER);} else {return T_INTEGER;}} - YY_BREAK -case 2: -YY_RULE_SETUP -#line 28 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_ADDRESS: %s (%d)\n", yytext, T_ADDRESS);} else {return T_ADDRESS;}} - YY_BREAK -case 3: -YY_RULE_SETUP -#line 29 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_BOOLEAN: %s (%d)\n", yytext, T_BOOLEAN);} else {return T_BOOLEAN;}} - YY_BREAK -case 4: -YY_RULE_SETUP -#line 30 "lexicalStructure.lex" -{if(DEBUG) {printf( "T_CHARACTER: %s (%d)\n", yytext, T_CHARACTER);} else {return T_CHARACTER;}} - YY_BREAK -case 5: -YY_RULE_SETUP -#line 32 "lexicalStructure.lex" -{if(DEBUG) {printf( "WHILE: %s (%d)\n", yytext, WHILE);} else {return WHILE;}} - YY_BREAK -case 6: -YY_RULE_SETUP -#line 33 "lexicalStructure.lex" -{if(DEBUG) {printf( "IF: %s (%d)\n", yytext, IF);} else {return IF;}} - YY_BREAK -case 7: -YY_RULE_SETUP -#line 34 "lexicalStructure.lex" -{if(DEBUG) {printf( "THEN: %s (%d)\n", yytext, THEN);} else {return THEN;}} - YY_BREAK -case 8: -YY_RULE_SETUP -#line 35 "lexicalStructure.lex" -{if(DEBUG) {printf( "ELSE: %s (%d)\n", yytext, ELSE);} else {return ELSE;}} - YY_BREAK -case 9: -YY_RULE_SETUP -#line 36 "lexicalStructure.lex" -{if(DEBUG) {printf( "TYPE: %s (%d)\n", yytext, TYPE);} else {return TYPE;}} - YY_BREAK -case 10: -YY_RULE_SETUP -#line 37 "lexicalStructure.lex" -{if(DEBUG) {printf( "FUNCTION: %s (%d)\n", yytext, FUNCTION);} else {return FUNCTION;}} - YY_BREAK -case 11: -YY_RULE_SETUP -#line 38 "lexicalStructure.lex" -{if(DEBUG) {printf( "RETURN: %s (%d)\n", yytext, RETURN);} else {return RETURN;}} - YY_BREAK -case 12: -YY_RULE_SETUP -#line 39 "lexicalStructure.lex" -{if(DEBUG) {printf( "EXTERNAL: %s (%d)\n", yytext, EXTERNAL);} else {return EXTERNAL;}} - YY_BREAK -case 13: -YY_RULE_SETUP -#line 40 "lexicalStructure.lex" -{if(DEBUG) {printf( "AS: %s (%d)\n", yytext, AS);} else {return AS;}} - YY_BREAK -case 14: -YY_RULE_SETUP -#line 42 "lexicalStructure.lex" -{if(DEBUG) {printf( "RELEASE: %s (%d)\n", yytext, RELEASE);} else {return RELEASE;}} - YY_BREAK -case 15: -YY_RULE_SETUP -#line 43 "lexicalStructure.lex" -{if(DEBUG) {printf( "RESERVE: %s (%d)\n", yytext, RESERVE);} else {return RESERVE;}} - YY_BREAK -case 16: -YY_RULE_SETUP -#line 45 "lexicalStructure.lex" -{if(DEBUG) {printf( "ADD: %s (%d)\n", yytext, ADD);} else {return ADD;}} - YY_BREAK -case 17: -YY_RULE_SETUP -#line 46 "lexicalStructure.lex" -{if(DEBUG) {printf( "SUB_OR_NEG: %s (%d)\n", yytext, SUB_OR_NEG);} else {return SUB_OR_NEG;}} - YY_BREAK -case 18: -YY_RULE_SETUP -#line 47 "lexicalStructure.lex" -{if(DEBUG) {printf( "MUL: %s (%d)\n", yytext, MUL);} else {return MUL;}} - YY_BREAK -case 19: -YY_RULE_SETUP -#line 48 "lexicalStructure.lex" -{if(DEBUG) {printf( "DIV: %s (%d)\n", yytext, DIV);} else {return DIV;}} - YY_BREAK -case 20: -YY_RULE_SETUP -#line 49 "lexicalStructure.lex" -{if(DEBUG) {printf( "REM: %s (%d)\n", yytext, REM);} else {return REM;}} - YY_BREAK -case 21: -YY_RULE_SETUP -#line 50 "lexicalStructure.lex" -{if(DEBUG) {printf( "LESS_THAN: %s (%d)\n", yytext, LESS_THAN);} else {return LESS_THAN;}} - YY_BREAK -case 22: -YY_RULE_SETUP -#line 51 "lexicalStructure.lex" -{if(DEBUG) {printf( "EQUAL_TO: %s (%d)\n", yytext, EQUAL_TO);} else {return EQUAL_TO;}} - YY_BREAK -case 23: -YY_RULE_SETUP -#line 52 "lexicalStructure.lex" -{if(DEBUG) {printf( "ASSIGN: %s (%d)\n", yytext, ASSIGN);} else {return ASSIGN;}} - YY_BREAK -case 24: -YY_RULE_SETUP -#line 53 "lexicalStructure.lex" -{if(DEBUG) {printf( "NOT: %s (%d)\n", yytext, NOT);} else {return NOT;}} - YY_BREAK -case 25: -YY_RULE_SETUP -#line 54 "lexicalStructure.lex" -{if(DEBUG) {printf( "AND: %s (%d)\n", yytext, AND);} else {return AND;}} - YY_BREAK -case 26: -YY_RULE_SETUP -#line 55 "lexicalStructure.lex" -{if(DEBUG) {printf( "OR: %s (%d)\n", yytext, OR);} else {return OR;}} - YY_BREAK -case 27: -YY_RULE_SETUP -#line 56 "lexicalStructure.lex" -{if(DEBUG) {printf( "DOT: %s (%d)\n", yytext, DOT);} else {return DOT;}} - YY_BREAK -case 28: -YY_RULE_SETUP -#line 58 "lexicalStructure.lex" -{if(DEBUG) {printf( "SEMI_COLON: %s (%d)\n", yytext, SEMI_COLON);} else {return SEMI_COLON;}} - YY_BREAK -case 29: -YY_RULE_SETUP -#line 59 "lexicalStructure.lex" -{if(DEBUG) {printf( "COLON: %s (%d)\n", yytext, COLON);} else {return COLON;}} - YY_BREAK -case 30: -YY_RULE_SETUP -#line 60 "lexicalStructure.lex" -{if(DEBUG) {printf( "COMMA: %s (%d)\n", yytext, COMMA);} else {return COMMA;}} - YY_BREAK -case 31: -YY_RULE_SETUP -#line 61 "lexicalStructure.lex" -{if(DEBUG) {printf( "ARROW: %s (%d)\n", yytext, ARROW);} else {return ARROW;}} - YY_BREAK -case 32: -YY_RULE_SETUP -#line 63 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_INTEGER: %s (%d)\n", yytext, C_INTEGER);} else {return C_INTEGER;}} - YY_BREAK -case 33: -YY_RULE_SETUP -#line 64 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_CHARACTER: %s (%d)\n", yytext, C_CHARACTER);} else {return C_CHARACTER;}} - YY_BREAK -case 34: -YY_RULE_SETUP -#line 65 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_STRING: %s (%d)\n", yytext, C_STRING);} else {return C_STRING;}} - YY_BREAK -case 35: -/* rule 35 can match eol */ -YY_RULE_SETUP -#line 66 "lexicalStructure.lex" -{if(DEBUG) {printf( "COMMENT: %s (%d)\n", yytext, COMMENT);} else {return COMMENT;}} - YY_BREAK -case 36: -YY_RULE_SETUP -#line 67 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_TRUE: %s (%d)\n", yytext, C_TRUE);} else {return C_TRUE;}} - YY_BREAK -case 37: -YY_RULE_SETUP -#line 68 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_FALSE: %s (%d)\n", yytext, C_FALSE);} else {return C_FALSE;}} - YY_BREAK -case 38: -YY_RULE_SETUP -#line 69 "lexicalStructure.lex" -{if(DEBUG) {printf( "C_NULL: %s (%d)\n", yytext, C_NULL);} else {return C_NULL;}} - YY_BREAK -case 39: -YY_RULE_SETUP -#line 71 "lexicalStructure.lex" -{if(DEBUG) {printf( "ID: %s (%d)\n", yytext, ID);} else {return ID;}} - YY_BREAK -case 40: -/* rule 40 can match eol */ -YY_RULE_SETUP -#line 73 "lexicalStructure.lex" -{line_number++; column_number = 1;} - YY_BREAK -case 41: -YY_RULE_SETUP -#line 74 "lexicalStructure.lex" -{column_number++;} - YY_BREAK -case 42: -YY_RULE_SETUP -#line 76 "lexicalStructure.lex" -ECHO; - YY_BREAK -#line 1037 "lex.yy.c" -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - (yytext_ptr)) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = (yy_hold_char); - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * yylex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( (yy_c_buf_p) <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - (yy_c_buf_p) = (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state ); - - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++(yy_c_buf_p); - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = (yy_c_buf_p); - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_END_OF_FILE: - { - (yy_did_buffer_switch_on_eof) = 0; - - if ( yywrap( ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - (yy_c_buf_p) = (yytext_ptr) + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = - (yytext_ptr) + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - (yy_c_buf_p) = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)]; - - yy_current_state = yy_get_previous_state( ); - - yy_cp = (yy_c_buf_p); - yy_bp = (yytext_ptr) + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ - } /* end of user's declarations */ -} /* end of yylex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (void) -{ - char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - char *source = (yytext_ptr); - int number_to_move, i; - int ret_val; - - if ( (yy_c_buf_p) > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( (yy_c_buf_p) - (yytext_ptr) - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) ((yy_c_buf_p) - (yytext_ptr) - 1); - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars) = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE; - - int yy_c_buf_p_offset = - (int) ((yy_c_buf_p) - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - yyrealloc( (void *) b->yy_ch_buf, - (yy_size_t) (b->yy_buf_size + 2) ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = NULL; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - (yy_c_buf_p) = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - (yy_n_chars), num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - if ( (yy_n_chars) == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - yyrestart( yyin ); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if (((yy_n_chars) + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - int new_size = (yy_n_chars) + number_to_move + ((yy_n_chars) >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) yyrealloc( - (void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, (yy_size_t) new_size ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - /* "- 2" to take care of EOB's */ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size = (int) (new_size - 2); - } - - (yy_n_chars) += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars) + 1] = YY_END_OF_BUFFER_CHAR; - - (yytext_ptr) = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (void) -{ - yy_state_type yy_current_state; - char *yy_cp; - - yy_current_state = (yy_start); - - for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp ) - { - YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state ) -{ - int yy_is_jam; - char *yy_cp = (yy_c_buf_p); - - YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - (yy_last_accepting_state) = yy_current_state; - (yy_last_accepting_cpos) = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 131 ) - yy_c = yy_meta[yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c]; - yy_is_jam = (yy_current_state == 130); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_UNPUT - - static void yyunput (int c, char * yy_bp ) -{ - char *yy_cp; - - yy_cp = (yy_c_buf_p); - - /* undo effects of setting up yytext */ - *yy_cp = (yy_hold_char); - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - { /* need to shift things up to make room */ - /* +2 for EOB chars. */ - int number_to_move = (yy_n_chars) + 2; - char *dest = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[ - YY_CURRENT_BUFFER_LVALUE->yy_buf_size + 2]; - char *source = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]; - - while ( source > YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - *--dest = *--source; - - yy_cp += (int) (dest - source); - yy_bp += (int) (dest - source); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = - (yy_n_chars) = (int) YY_CURRENT_BUFFER_LVALUE->yy_buf_size; - - if ( yy_cp < YY_CURRENT_BUFFER_LVALUE->yy_ch_buf + 2 ) - YY_FATAL_ERROR( "flex scanner push-back overflow" ); - } - - *--yy_cp = (char) c; - - (yytext_ptr) = yy_bp; - (yy_hold_char) = *yy_cp; - (yy_c_buf_p) = yy_cp; -} - -#endif - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (void) -#else - static int input (void) -#endif - -{ - int c; - - *(yy_c_buf_p) = (yy_hold_char); - - if ( *(yy_c_buf_p) == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( (yy_c_buf_p) < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[(yy_n_chars)] ) - /* This was really a NUL. */ - *(yy_c_buf_p) = '\0'; - - else - { /* need more input */ - int offset = (int) ((yy_c_buf_p) - (yytext_ptr)); - ++(yy_c_buf_p); - - switch ( yy_get_next_buffer( ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - yyrestart( yyin ); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( yywrap( ) ) - return 0; - - if ( ! (yy_did_buffer_switch_on_eof) ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(); -#else - return input(); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - (yy_c_buf_p) = (yytext_ptr) + offset; - break; - } - } - } - - c = *(unsigned char *) (yy_c_buf_p); /* cast for 8-bit char's */ - *(yy_c_buf_p) = '\0'; /* preserve yytext */ - (yy_hold_char) = *++(yy_c_buf_p); - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * - * @note This function does not reset the start condition to @c INITIAL . - */ - void yyrestart (FILE * input_file ) -{ - - if ( ! YY_CURRENT_BUFFER ){ - yyensure_buffer_stack (); - YY_CURRENT_BUFFER_LVALUE = - yy_create_buffer( yyin, YY_BUF_SIZE ); - } - - yy_init_buffer( YY_CURRENT_BUFFER, input_file ); - yy_load_buffer_state( ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * - */ - void yy_switch_to_buffer (YY_BUFFER_STATE new_buffer ) -{ - - /* TODO. We should be able to replace this entire function body - * with - * yypop_buffer_state(); - * yypush_buffer_state(new_buffer); - */ - yyensure_buffer_stack (); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - yy_load_buffer_state( ); - - /* We don't actually know whether we did this switch during - * EOF (yywrap()) processing, but the only time this flag - * is looked at is after yywrap() is called, so it's safe - * to go ahead and always set it. - */ - (yy_did_buffer_switch_on_eof) = 1; -} - -static void yy_load_buffer_state (void) -{ - (yy_n_chars) = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - (yytext_ptr) = (yy_c_buf_p) = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - (yy_hold_char) = *(yy_c_buf_p); -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * - * @return the allocated buffer state. - */ - YY_BUFFER_STATE yy_create_buffer (FILE * file, int size ) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) yyalloc( (yy_size_t) (b->yy_buf_size + 2) ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - yy_init_buffer( b, file ); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with yy_create_buffer() - * - */ - void yy_delete_buffer (YY_BUFFER_STATE b ) -{ - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - yyfree( (void *) b->yy_ch_buf ); - - yyfree( (void *) b ); -} - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a yyrestart() or at EOF. - */ - static void yy_init_buffer (YY_BUFFER_STATE b, FILE * file ) - -{ - int oerrno = errno; - - yy_flush_buffer( b ); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then yy_init_buffer was _probably_ - * called from yyrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * - */ - void yy_flush_buffer (YY_BUFFER_STATE b ) -{ - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - yy_load_buffer_state( ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * - */ -void yypush_buffer_state (YY_BUFFER_STATE new_buffer ) -{ - if (new_buffer == NULL) - return; - - yyensure_buffer_stack(); - - /* This block is copied from yy_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *(yy_c_buf_p) = (yy_hold_char); - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = (yy_c_buf_p); - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars); - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - (yy_buffer_stack_top)++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from yy_switch_to_buffer. */ - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * - */ -void yypop_buffer_state (void) -{ - if (!YY_CURRENT_BUFFER) - return; - - yy_delete_buffer(YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - if ((yy_buffer_stack_top) > 0) - --(yy_buffer_stack_top); - - if (YY_CURRENT_BUFFER) { - yy_load_buffer_state( ); - (yy_did_buffer_switch_on_eof) = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void yyensure_buffer_stack (void) -{ - yy_size_t num_to_alloc; - - if (!(yy_buffer_stack)) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; /* After all that talk, this was set to 1 anyways... */ - (yy_buffer_stack) = (struct yy_buffer_state**)yyalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - memset((yy_buffer_stack), 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - (yy_buffer_stack_max) = num_to_alloc; - (yy_buffer_stack_top) = 0; - return; - } - - if ((yy_buffer_stack_top) >= ((yy_buffer_stack_max)) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - yy_size_t grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = (yy_buffer_stack_max) + grow_size; - (yy_buffer_stack) = (struct yy_buffer_state**)yyrealloc - ((yy_buffer_stack), - num_to_alloc * sizeof(struct yy_buffer_state*) - ); - if ( ! (yy_buffer_stack) ) - YY_FATAL_ERROR( "out of dynamic memory in yyensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset((yy_buffer_stack) + (yy_buffer_stack_max), 0, grow_size * sizeof(struct yy_buffer_state*)); - (yy_buffer_stack_max) = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_buffer (char * base, yy_size_t size ) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return NULL; - - b = (YY_BUFFER_STATE) yyalloc( sizeof( struct yy_buffer_state ) ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_buffer()" ); - - b->yy_buf_size = (int) (size - 2); /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = NULL; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - yy_switch_to_buffer( b ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to yylex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * yy_scan_bytes() instead. - */ -YY_BUFFER_STATE yy_scan_string (const char * yystr ) -{ - - return yy_scan_bytes( yystr, (int) strlen(yystr) ); -} - -/** Setup the input buffer state to scan the given bytes. The next call to yylex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE yy_scan_bytes (const char * yybytes, int _yybytes_len ) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = (yy_size_t) (_yybytes_len + 2); - buf = (char *) yyalloc( n ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = yy_scan_buffer( buf, n ); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in yy_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yynoreturn yy_fatal_error (const char* msg ) -{ - fprintf( stderr, "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = (yy_hold_char); \ - (yy_c_buf_p) = yytext + yyless_macro_arg; \ - (yy_hold_char) = *(yy_c_buf_p); \ - *(yy_c_buf_p) = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the current line number. - * - */ -int yyget_lineno (void) -{ - - return yylineno; -} - -/** Get the input stream. - * - */ -FILE *yyget_in (void) -{ - return yyin; -} - -/** Get the output stream. - * - */ -FILE *yyget_out (void) -{ - return yyout; -} - -/** Get the length of the current token. - * - */ -int yyget_leng (void) -{ - return yyleng; -} - -/** Get the current token. - * - */ - -char *yyget_text (void) -{ - return yytext; -} - -/** Set the current line number. - * @param _line_number line number - * - */ -void yyset_lineno (int _line_number ) -{ - - yylineno = _line_number; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param _in_str A readable stream. - * - * @see yy_switch_to_buffer - */ -void yyset_in (FILE * _in_str ) -{ - yyin = _in_str ; -} - -void yyset_out (FILE * _out_str ) -{ - yyout = _out_str ; -} - -int yyget_debug (void) -{ - return yy_flex_debug; -} - -void yyset_debug (int _bdebug ) -{ - yy_flex_debug = _bdebug ; -} - -static int yy_init_globals (void) -{ - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from yylex_destroy(), so don't allocate here. - */ - - (yy_buffer_stack) = NULL; - (yy_buffer_stack_top) = 0; - (yy_buffer_stack_max) = 0; - (yy_c_buf_p) = NULL; - (yy_init) = 0; - (yy_start) = 0; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = NULL; - yyout = NULL; -#endif - - /* For future reference: Set errno on error, since we are called by - * yylex_init() - */ - return 0; -} - -/* yylex_destroy is for both reentrant and non-reentrant scanners. */ -int yylex_destroy (void) -{ - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - yy_delete_buffer( YY_CURRENT_BUFFER ); - YY_CURRENT_BUFFER_LVALUE = NULL; - yypop_buffer_state(); - } - - /* Destroy the stack itself. */ - yyfree((yy_buffer_stack) ); - (yy_buffer_stack) = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * yylex() is called, initialization will occur. */ - yy_init_globals( ); - - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, const char * s2, int n ) -{ - - int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (const char * s ) -{ - int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *yyalloc (yy_size_t size ) -{ - return malloc(size); -} - -void *yyrealloc (void * ptr, yy_size_t size ) -{ - - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return realloc(ptr, size); -} - -void yyfree (void * ptr ) -{ - free( (char *) ptr ); /* see yyrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -#line 76 "lexicalStructure.lex" - - diff --git a/lexicalStructure.lex b/lexicalStructure.lex index 86799c2..cf5e50f 100644 --- a/lexicalStructure.lex +++ b/lexicalStructure.lex @@ -16,7 +16,7 @@ COM ([^*]|\*+[^)*])* ID [A-Za-z_][0-9A-Za-z_]* DIGIT [0-9] -CHAR \\n|\\t|\\'|[^'\n\t\\] +CHAR \\n|\\t|\\'|[^'\n\t\\]|\\\\ /* char can be a newline, tab, an escaped quote, or anything but a single quote, an actual line break, an actual tab, or a backslash by itself (to prevent confusion from escaped quote */ SCHAR \\n|\\t|\\\"|[^\"\n\\] /* similar to above, a string Char (SCHAR) is the same as a CHAR except we cannot have double quotes instead of single quotes. Double quotes need to be escaped in Flex unlike single quotes based on documentation */ diff --git a/runner b/runner deleted file mode 100755 index 067c50734e81c7aca4d80ecc4986f74a57d26c20..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31632 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⋙)WfRSJL>tPUVbNFAn(0^WBDcz-Sk26(S8@K?wgv7!vtR7}_q zQzPRV3YSlIB6Boo6rfG80?f(Pm})*U6o^{aDl(n#nf2BAqJl0ZD4|{dI?(aL z;(*G(I)7JCF6WH%cYFSQ(5JI^rLWHC6>O0V$|Lz%>8o?{O3=tnSw2f z=l$`Fs44&Iyj($bZiHnb4=No6H-buM@hYy);|(bF?D>~u{EZBqenu5|(r00N` z%dgI76wFeB659RulGIo2hZRXd3Deb$DM@xosK6h9Q2I(=oeL_s+~$9K`tREGSIrle z65WScTgLgm`hKikUd0vs9J<*ieRV&-^^J3&RYJu+{wqCY zuoskxrqWmY>w!{#mlBlFWsCQb=@;7QN?#tY8(hjO1v6A_M{vZiXO)1vW&0b1C>_

|BJckN97$)J$vZ&R>E+5Z8R#QfR- diff --git a/runner.o b/runner.o deleted file mode 100644 index 6778a689da82ad0f00fa83c9b9985ff9dd0930ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4616 zcmbtYUx-vy7(cVCu5GKcn&!Wdn`D^mPCL3uipi+lykY+oHjIL8cIJ*VI&){Zb8ovF zj#9&hw@K(BB8YSmfZEgg8?3r`U z@BF?$=R5x{drE)u@vcZjkVM2D(e4o{#OdYjc0x82V!2o*evNLtHDY+zjq2QxSGj6< zZlhYc8gX{PZ}+KT`0a9EFlu_ksMePnHDP$uO;q>3VW4+~;HkPZXw()X!|=ZTauDhZ z7>;p9VZQeH+aNbYmk`py_GvjPwV10jt0mI5Zg`S+V;oExwUI_mhk&oBhzw6}K};>f zyBP2WL9GuPae27+{cE^~q*rjzAufI1p90JXB9qzb$82?=`cwD}h<=``tuA-is6B>r ztu2$ka^5v}4lK<-;r+hXn>Wrpf+LXT^H|Fzc(pS375H>ePQSQb6ulTSBO+g z^urElff!jKaif^^-qG~;X!J_YE6rnQ#^h#u?Q#Kn(a|h z-jN`fVx{G|H*5OMYSXtabvy3)9(l@U7ppwO+(2^H%gKB$t>vte>uBRSC#%H=v_0Dg zw4$w9MN5k%^QCN3OWH@ZUSW%LE|Vc8k;%Wyv2G|RtNcntUO6lx6aA45eLYLxf&+?27z@g4cpCNP{jYcJU$&%svI{73Y_}X0 z;(p+_$Ja(^{6#f>0Bh1eiKF3yrWT2xZ+BvJcf65tF7jyIq0$Sz6<~>kT6lf0WOn4- z0J{eY<|!!a0YLs)l`uIMz_vi?#K*1Q3EvTdV-7p<_X3W7DL$EFz>E<7Ga>kMA$U3j zFNNR}A^52fd@2NgGX#G-1b;6C7q)9zrX5QOI5nb>%vqxB*m=_ux$>wydZU?K-UKjh z+P27y+d0P+nPLeTlas&(8XhZ9N)<`~Ip%~TQpLPmutqJnFlO2!pR-JAXG(U?axy>! zA4g?1Au_3av5Y=!JC(IXDw)q0Q`ogqrAY`JWZ19dPFw=*Kk>x|ImqxHhU0pn;E}^~ zLi}S0f*_7tk#HM95ZvE)K_UD!f*{Dpv6k=l_6G=pke#i5SA48$L7nHUJxM2=lNO3aLmt6B!SSmK|4G@ zI|6*l`(A}3pXcEqoqkYQH8w|(0i*UT7Q7{itD1^Vm zaJ*Lt|AgTf=Mg97oP_skr_`91Snz&@S3)#wZaW5kbOivLlDbNkOS{9eW{F?z(FotrO+2MK62;lUtz7)Xeofon4WWh;}LG9Rnou!s-=94k` zUc}N#Cn;iM<+6y`MZc3O77C{2h?rG$%ou!g4VIl`3O?Xu|ET50N;W)0wlfJjXvxfu zX6$6aRFV9@N&|H~T9{id3Dx;g<&DPFF{G~804-em!~)_sj^JerQc|BDVNQ2IeL!9MO|w8_^Vx?)HX@jHeK#ZMT%8>l}-fT}-I z`m`@;nBu2;9}G~NI9Oi}2C4>w+{1w5ISs}?qx3bUM^!NXV=#a=gZi!iIDg!QNKHWD z@*N&B5W}zJw*bDU#Z)c+f;O|Db` diff --git a/test_comments.tok b/test_comments.tok deleted file mode 100644 index 0486ed9..0000000 --- a/test_comments.tok +++ /dev/null @@ -1,9 +0,0 @@ -1 1 700 "(* hello *)" -2 1 700 "(* hello *)" -3 1 700 "(* I'd think this is a legal "string" that contains several \n \t -escaped characters, isn't it? *)" -5 1 700 "(* \ *)" -6 1 700 "(* *)" -7 1 700 "(*{COMMENT}+ *)" -8 1 700 "(* * *)" -9 1 700 "(* (hello) *)" diff --git a/test_generalTokenTest.tok b/test_generalTokenTest.tok deleted file mode 100644 index 08c907c..0000000 --- a/test_generalTokenTest.tok +++ /dev/null @@ -1,61 +0,0 @@ -1 1 101 "This" -1 6 101 "is" -1 9 101 "a" -1 11 101 "test" -2 1 301 "9" -2 2 101 "combined" -2 11 301 "7" -2 12 101 "okens" -3 1 301 "12345" -4 1 301 "893247892" -5 1 101 "combined" -5 10 101 "DueToUnknownChar" -5 27 101 "_validtoken" -5 39 101 "__validtoken1" -5 53 101 "_valid_token2" -5 67 101 "validToken3_" -6 1 305 "true" -6 6 306 "false" -7 1 302 "null" -7 6 401 "while" -7 12 609 "!" -7 13 101 "wrong" -7 19 402 "if" -7 22 101 "when" -8 1 404 "else" -8 6 405 "type" -8 11 406 "function" -9 1 407 "return" -9 9 408 "external" -9 25 409 "as" -10 1 101 "string" -10 8 101 "_NOte_that_was_not_reserved" -11 7 508 ":" -11 8 507 ";" -11 9 509 "," -11 10 510 "->" -12 1 601 "+" -12 2 602 "-" -12 3 603 "*" -12 4 604 "/" -12 5 605 "%" -13 1 606 "<" -13 2 607 "=" -14 1 608 ":=" -15 2 101 "This" -15 7 101 "is" -15 10 101 "not" -15 14 101 "a" -15 16 101 "valid" -16 1 101 "String" -17 1 304 ""This is a valid String"" -18 1 609 "!" -18 2 611 "|" -19 1 612 "." -19 2 612 "." -20 1 700 "(* this is a comment *)" -21 2 603 "*" -21 3 101 "Not" -21 7 101 "a" -21 9 101 "comment" -22 3 610 "&" diff --git a/test_keywords.tok b/test_keywords.tok deleted file mode 100644 index 9e70321..0000000 --- a/test_keywords.tok +++ /dev/null @@ -1,29 +0,0 @@ -1 1 401 "while" -2 1 101 "While" -3 1 101 "whiLe" -4 1 402 "if" -5 1 101 "IF" -6 1 101 "If" -7 1 101 "iF" -8 1 403 "then" -9 1 101 "Then" -10 1 101 "theN" -11 1 404 "else" -12 1 101 "eLse" -13 1 101 "elSe" -14 1 101 "Else" -15 1 405 "type" -16 1 101 "Type" -17 1 101 "tyPe" -18 1 406 "function" -19 1 101 "Function" -20 1 101 "functioN" -21 1 407 "return" -22 1 101 "Return" -23 1 101 "returN" -24 1 408 "external" -25 1 101 "External" -26 1 101 "exteRnal" -27 1 409 "as" -28 1 101 "As" -29 1 101 "aS" diff --git a/test_operators.tok b/test_operators.tok deleted file mode 100644 index dd3eaab..0000000 --- a/test_operators.tok +++ /dev/null @@ -1,22 +0,0 @@ -1 1 601 "+" -2 1 602 "-" -3 1 603 "*" -4 1 604 "/" -6 1 605 "%" -7 1 606 "<" -9 1 607 "=" -10 1 608 ":=" -11 1 607 "=" -11 2 508 ":" -12 1 508 ":" -13 1 607 "=" -14 1 609 "!" -15 1 610 "&" -16 1 611 "|" -17 1 612 "." -18 1 101 "relEASE" -19 1 614 "release" -20 1 101 "RELEASE" -21 1 613 "reserve" -22 1 101 "RESERVE" -23 1 101 "reSERVe" diff --git a/test_otherpunc.tok b/test_otherpunc.tok deleted file mode 100644 index 7500378..0000000 --- a/test_otherpunc.tok +++ /dev/null @@ -1,7 +0,0 @@ -1 1 507 ";" -2 1 508 ":" -3 1 509 "," -4 1 510 "->" -5 1 510 "->" -6 1 602 "-" -6 2 510 "->" diff --git a/test_simpleIntTest.tok b/test_simpleIntTest.tok deleted file mode 100644 index 0bcbefb..0000000 --- a/test_simpleIntTest.tok +++ /dev/null @@ -1,8 +0,0 @@ -1 1 301 "45" -2 1 301 "123" -3 1 301 "8392" -4 1 301 "40" -4 4 301 "40" -5 2 301 "200" -5 6 301 "50" -5 9 301 "21783" diff --git a/test_simpleLiterals.tok b/test_simpleLiterals.tok deleted file mode 100644 index 7e38bb3..0000000 --- a/test_simpleLiterals.tok +++ /dev/null @@ -1,63 +0,0 @@ -1 1 304 ""this is a string"" -1 20 301 "721398" -1 27 303 "'g'" -1 32 604 "/" -1 33 101 "n" -1 36 700 "(* should print 3 tokens before this *)" -4 1 301 "12893" -4 8 101 "this" -4 13 101 "is" -4 16 101 "not" -4 20 101 "a" -4 22 101 "string" -4 29 700 "(*one valid token before this*)" -5 1 700 "(* spacey comment here -over multiple lines -will it work? *)" -7 18 306 "false" -11 1 306 "false" -12 1 700 "(**)" -14 1 101 "nullfalse" -15 2 101 "nulltrue" -16 1 302 "null" -17 1 303 "'7'" -18 1 305 "true" -19 2 301 "189" -20 1 303 "'\t'" -21 1 303 "'"'" -22 1 303 "'/'" -23 1 303 "'\n'" -24 1 303 "'\''" -25 1 303 "'\t'" -27 1 303 "'n'" -29 2 101 "fdsf" -30 1 700 "(*/jnewjno2893u86^ Lots of random characters /n /t '") *)" -35 1 304 ""STRINGwithnotSPaces"" -36 1 303 "' '" -38 1 304 ""J"" -39 1 304 """" -40 1 304 "" "" -42 1 304 ""{SCHAR}"" -43 1 304 ""SCHAR"" -44 1 304 ""[SCHAR]"" -45 1 304 ""FINAL: I'd think this is a legal \"string\" that contains \n \t several escaped characters, isn't it?"" -46 2 101 "I" -46 4 101 "d" -46 6 101 "think" -46 12 101 "this" -46 17 101 "is" -46 20 101 "a" -46 22 101 "legal" -46 30 101 "string" -46 39 101 "that" -46 44 101 "contains" -46 53 101 "several" -46 63 101 "n" -46 66 101 "t" -46 68 101 "escaped" -46 76 101 "characters" -46 86 509 "," -46 88 101 "isn" -46 92 101 "t" -46 94 101 "it" -47 1 101 "nullLike"