![]() |
Main Page | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members
a.lexGo to the documentation of this file.00001 %{ 00002 #include <stdio.h> 00003 #include <string.h> 00004 #include <sys/types.h> 00005 #include <sys/stat.h> 00006 #include <unistd.h> 00007 00008 #include "a.h" 00009 #include "a.tab.h" 00010 #include "Parser.h" 00011 00012 #define C THIS -> m_the_str[THIS -> m_the_ptr] 00013 #define C_INCR THIS -> m_the_str[THIS -> m_the_ptr++] 00014 00015 #define YY_INPUT(buf,result,max_size) { \ 00016 if ( THIS -> m_the_str) \ 00017 *buf = C_INCR; \ 00018 result = ( THIS -> m_the_str && *buf) ? 1 : YY_NULL; \ 00019 } 00020 00021 #define YY_DECL int yylex(void *yylval,void *parser) 00022 #define YYLVAL ((YYSTYPE *)yylval) 00023 00024 %} 00025 00026 DIGIT [0-9] 00027 ID [A-Z][A-Z0-9]* 00028 STRING "\""[^\"]*"\"" 00029 00030 %% 00031 00032 {DIGIT}+ { 00033 YYLVAL -> d = atof(yytext); 00034 return NUM; 00035 } 00036 00037 {DIGIT}*"."{DIGIT}* { 00038 YYLVAL -> d = atof(yytext); 00039 return NUM; 00040 } 00041 00042 {STRING} { 00043 strcpy(YYLVAL -> s,yytext + 1); 00044 YYLVAL -> s[strlen(YYLVAL -> s) - 1] = 0; 00045 return STRING; 00046 } 00047 00048 END return End; 00049 FOR return For; 00050 NEXT return Next; 00051 DATA { 00052 int prevx; 00053 00054 prevx = THIS -> m_the_ptr; 00055 while (C && C != ':') 00056 { 00057 YYLVAL -> s[THIS -> m_the_ptr - prevx] = C; 00058 THIS -> m_the_ptr++; 00059 } 00060 YYLVAL -> s[THIS -> m_the_ptr - prevx] = 0; 00061 return Data; 00062 } 00063 INPUT return Input; 00064 DEL return Del; 00065 DIM return Dim; 00066 READ return Read; 00067 00068 GR return Gr; 00069 TEXT return Text; 00070 PR return Pr; 00071 IN return In; 00072 CALL return Call; 00073 PLOT return Plot; 00074 HLIN return Hlin; 00075 VLIN return Vlin; 00076 00077 HGR2 return Hgr2; 00078 HGR return Hgr; 00079 HCOLOR return Hcolor; 00080 HPLOT return Hplot; 00081 DRAW return Draw; 00082 XDRAW return Xdraw; 00083 HTAB return Htab; 00084 HOME return Home; 00085 00086 ROT return Rot; 00087 SCALE return Scale; 00088 SHLOAD return Shload; 00089 TRACE return Trace; 00090 NOTRACE return Notrace; 00091 NORMAL return Normal; 00092 INVERSE return Inverse; 00093 FLASH return Flash; 00094 00095 COLOR return Color; 00096 POP return Pop; 00097 VTAB return Vtab; 00098 HIMEM return Himem; 00099 LOMEM return Lomem; 00100 ONERR return Onerr; 00101 RESUME return Resume; 00102 RECALL return Recall; 00103 00104 STORE return Store; 00105 SPEED"=" return Speed; 00106 LET return Let; 00107 GOTO return Goto; 00108 RUN return Run; 00109 IF return If; 00110 RESTORE return Restore; 00111 00112 GOSUB return Gosub; 00113 RETURN return Return; 00114 REM { 00115 strcpy(YYLVAL -> s,THIS -> m_the_str + THIS -> m_the_ptr); 00116 C = 0; 00117 return Rem; 00118 } 00119 STOP return Stop; 00120 ON return On; 00121 WAIT return Wait; 00122 LOAD return Load; 00123 SAVE return Save; 00124 00125 DEF return Def; 00126 POKE return Poke; 00127 PRINT return Print; 00128 CONT return Cont; 00129 LIST return List; 00130 CLEAR return Clear; 00131 GET return Get; 00132 NEW return New; 00133 00134 TAB return Tab; 00135 TO return To; 00136 FN return Fn; 00137 SPC return Spc; 00138 THEN return Then; 00139 AT return At; 00140 NOT return Not; 00141 STEP return Step; 00142 00143 AND return And; 00144 OR return Or; 00145 00146 SGN return Sgn; 00147 INT return Int; 00148 ABS return Abs; 00149 USR return Usr; 00150 FRE return Fre; 00151 SCRN return Scrn; 00152 00153 PDL return Pdl; 00154 POS return Pos; 00155 SQR return Sqr; 00156 RND return Rnd; 00157 LOG return Log; 00158 EXP return Exp; 00159 COS return Cos; 00160 SIN return Sin; 00161 00162 TAN return Tan; 00163 ATN return Atn; 00164 PEEK return Peek; 00165 LEN return Len; 00166 STR"$" return Str; 00167 VAL return Val; 00168 ASC return Asc; 00169 CHR"$" return Chr; 00170 00171 LEFT"$" return Left; 00172 RIGHT"$" return Right; 00173 MID"$" return Mid; 00174 00175 00176 "<"[ ]*"=" return LTEQ; 00177 "="[ ]*"<" return LTEQ; 00178 "<"[ ]*">" return NEQ; 00179 "="[ ]*">" return GTEQ; 00180 ">"[ ]*"=" return GTEQ; 00181 00182 ","|":"|";" return *yytext; 00183 00184 "="|"<"|">"|"("|")" { 00185 return *yytext; 00186 } 00187 "*"|"/"|"+"|"-" return *yytext; 00188 00189 {ID}"$" { 00190 strcpy(YYLVAL -> s,yytext); 00191 return STRINGVAR; 00192 } 00193 00194 {ID}"%" { 00195 strcpy(YYLVAL -> s,yytext); 00196 return NUMVAR; 00197 } 00198 00199 {ID} { 00200 strcpy(YYLVAL -> s,yytext); 00201 return IDENTIFIER; 00202 } 00203 00204 [ \t\n] 00205 00206 "\""[^\"]* 00207 00208 . { 00209 printf("Unrecognized char '%c' (0x%02x)\n",*yytext,*yytext); 00210 *YYLVAL -> s = *yytext; 00211 YYLVAL -> s[1] = 0; 00212 return UNDEF; 00213 } 00214 00215 %% 00216 00217 int yywrap() 00218 { 00219 return 1; // end of file 00220 } 00221 |