|
@@ -36,8 +36,8 @@
|
|
|
|
|
|
#define register
|
|
|
|
|
|
-#define SET_TOKEN(t) (yylval_param->token = t)
|
|
|
-#define SET_STRING (yylval_param->string = new std::string(yytext, yyleng))
|
|
|
+#define CREATE_TOKEN(t) (yylval_param->token = t)
|
|
|
+#define CREATE_STRING (yylval_param->string = new std::string(yytext, yyleng))
|
|
|
|
|
|
extern "C" int qlow_parser_wrap(yyscan_t s);
|
|
|
|
|
@@ -76,12 +76,12 @@ UTF8CHAR [\x00-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xe
|
|
|
<COMMENT>\n yycolumn = 0;
|
|
|
<COMMENT>. ; // inside comment, ignore everything
|
|
|
|
|
|
-<LINE_COMMENT>"\n" yycolumn = 0; yy_pop_state(yyscanner); //yy_push_state(INITIAL);
|
|
|
+<LINE_COMMENT>"\n" yycolumn = 0; yy_pop_state(yyscanner); return CREATE_TOKEN(NEW_LINE); //yy_push_state(INITIAL);
|
|
|
<LINE_COMMENT>. ; // inside comment, ignore everything
|
|
|
|
|
|
<STRING>"\"" yy_pop_state(yyscanner);
|
|
|
<STRING>[^\"^\n]* printf("%s\n", std::string(yytext, yyleng).c_str());
|
|
|
-<STRING>\n yycolumn = 0; SET_STRING; return UNEXPECTED_SYMBOL;
|
|
|
+<STRING>\n yycolumn = 0; CREATE_STRING; return UNEXPECTED_SYMBOL;
|
|
|
|
|
|
"/*" yy_push_state(COMMENT, yyscanner); commentDepth = 1;
|
|
|
"//" yy_push_state(LINE_COMMENT, yyscanner);
|
|
@@ -89,61 +89,61 @@ UTF8CHAR [\x00-\x7f]|[\xc2-\xdf][\x80-\xbf]|\xe0[\xa0-\xbf][\x80-\xbf]|[\xe1-\xe
|
|
|
|
|
|
|
|
|
[\t ] ; // Space or tab ignored
|
|
|
-<METHOD>\n yycolumn = 0; return SET_TOKEN(NEW_LINE);
|
|
|
-\n yycolumn = 0; //return SET_TOKEN(NEW_LINE);
|
|
|
-
|
|
|
-"class" return SET_TOKEN(CLASS);
|
|
|
-"struct" return SET_TOKEN(STRUCT);
|
|
|
-"do" yy_push_state(METHOD, yyscanner); return SET_TOKEN(DO);
|
|
|
-<METHOD>"end" yy_pop_state(yyscanner); return SET_TOKEN(END);
|
|
|
-<INITIAL>"end" return SET_TOKEN(END);
|
|
|
-"if" return SET_TOKEN(IF);
|
|
|
-"while" return SET_TOKEN(WHILE);
|
|
|
-"else" return SET_TOKEN(ELSE);
|
|
|
-"return" return SET_TOKEN(RETURN);
|
|
|
-"new" return SET_TOKEN(NEW);
|
|
|
-"extern" return SET_TOKEN(EXTERN);
|
|
|
-"import" return SET_TOKEN(IMPORT);
|
|
|
-
|
|
|
-":" return SET_TOKEN(COLON);
|
|
|
-";" return SET_TOKEN(SEMICOLON);
|
|
|
-"," return SET_TOKEN(COMMA);
|
|
|
-"." return SET_TOKEN(DOT);
|
|
|
-"&" return SET_TOKEN(AMPERSAND);
|
|
|
-
|
|
|
-":=" SET_STRING; return ASSIGN;
|
|
|
-
|
|
|
-"==" SET_STRING; return EQUALS;
|
|
|
-"!=" SET_STRING; return NOT_EQUALS;
|
|
|
-"and" SET_STRING; return AND;
|
|
|
-"or" SET_STRING; return OR;
|
|
|
-"xor" SET_STRING; return XOR;
|
|
|
-"not" SET_STRING; return NOT;
|
|
|
-"as" return SET_TOKEN(AS);
|
|
|
-
|
|
|
-"+" SET_STRING; return PLUS;
|
|
|
-"-" SET_STRING; return MINUS;
|
|
|
-"*" SET_STRING; return ASTERISK;
|
|
|
-"/" SET_STRING; return SLASH;
|
|
|
-[\+\-\*\/=!<>]+ SET_STRING; return CUSTOM_OPERATOR;
|
|
|
-
|
|
|
-"(" return SET_TOKEN(ROUND_LEFT);
|
|
|
-")" return SET_TOKEN(ROUND_RIGHT);
|
|
|
-"[" return SET_TOKEN(SQUARE_LEFT);
|
|
|
-"]" return SET_TOKEN(SQUARE_RIGHT);
|
|
|
-
|
|
|
-"false" return SET_TOKEN(FALSE);
|
|
|
-"true" return SET_TOKEN(TRUE);
|
|
|
-
|
|
|
-[0-9_]+ SET_STRING; return INT_LITERAL;
|
|
|
-0x[0-9A-Fa-f]+ SET_STRING; return INT_LITERAL;
|
|
|
-[a-zA-Z_][a-zA-Z0-9_]* SET_STRING; return IDENTIFIER;
|
|
|
-
|
|
|
-. SET_STRING; return UNEXPECTED_SYMBOL; // printf("Unexpected symbol %s.\n", std::string(yytext, yyleng).c_str()); yyterminate();
|
|
|
+<METHOD>\n yycolumn = 0; return CREATE_TOKEN(NEW_LINE);
|
|
|
+\n yycolumn = 0; //return CREATE_TOKEN(NEW_LINE);
|
|
|
+
|
|
|
+"class" return CREATE_TOKEN(CLASS);
|
|
|
+"struct" return CREATE_TOKEN(STRUCT);
|
|
|
+"do" yy_push_state(METHOD, yyscanner); return CREATE_TOKEN(DO);
|
|
|
+<METHOD>"end" yy_pop_state(yyscanner); return CREATE_TOKEN(END);
|
|
|
+<INITIAL>"end" return CREATE_TOKEN(END);
|
|
|
+"if" return CREATE_TOKEN(IF);
|
|
|
+"while" return CREATE_TOKEN(WHILE);
|
|
|
+"else" return CREATE_TOKEN(ELSE);
|
|
|
+"return" return CREATE_TOKEN(RETURN);
|
|
|
+"new" return CREATE_TOKEN(NEW);
|
|
|
+"extern" return CREATE_TOKEN(EXTERN);
|
|
|
+"import" return CREATE_TOKEN(IMPORT);
|
|
|
+
|
|
|
+":" return CREATE_TOKEN(COLON);
|
|
|
+";" return CREATE_TOKEN(SEMICOLON);
|
|
|
+"," return CREATE_TOKEN(COMMA);
|
|
|
+"." return CREATE_TOKEN(DOT);
|
|
|
+"&" return CREATE_TOKEN(AMPERSAND);
|
|
|
+
|
|
|
+":=" CREATE_STRING; return ASSIGN;
|
|
|
+
|
|
|
+"==" CREATE_STRING; return EQUALS;
|
|
|
+"!=" CREATE_STRING; return NOT_EQUALS;
|
|
|
+"and" CREATE_STRING; return AND;
|
|
|
+"or" CREATE_STRING; return OR;
|
|
|
+"xor" CREATE_STRING; return XOR;
|
|
|
+"not" CREATE_STRING; return NOT;
|
|
|
+"as" return CREATE_TOKEN(AS);
|
|
|
+
|
|
|
+"+" CREATE_STRING; return PLUS;
|
|
|
+"-" CREATE_STRING; return MINUS;
|
|
|
+"*" CREATE_STRING; return ASTERISK;
|
|
|
+"/" CREATE_STRING; return SLASH;
|
|
|
+[\+\-\*\/=!<>]+ CREATE_STRING; return CUSTOM_OPERATOR;
|
|
|
+
|
|
|
+"(" return CREATE_TOKEN(ROUND_LEFT);
|
|
|
+")" return CREATE_TOKEN(ROUND_RIGHT);
|
|
|
+"[" return CREATE_TOKEN(SQUARE_LEFT);
|
|
|
+"]" return CREATE_TOKEN(SQUARE_RIGHT);
|
|
|
+
|
|
|
+"false" return CREATE_TOKEN(FALSE);
|
|
|
+"true" return CREATE_TOKEN(TRUE);
|
|
|
+
|
|
|
+[0-9_]+ CREATE_STRING; return INT_LITERAL;
|
|
|
+0x[0-9A-Fa-f]+ CREATE_STRING; return INT_LITERAL;
|
|
|
+[a-zA-Z_][a-zA-Z0-9_]* CREATE_STRING; return IDENTIFIER;
|
|
|
+
|
|
|
+. CREATE_STRING; return UNEXPECTED_SYMBOL; // printf("Unexpected symbol %s.\n", std::string(yytext, yyleng).c_str()); yyterminate();
|
|
|
|
|
|
%%
|
|
|
|
|
|
-// [a-zA-Z_][a-zA-Z0-9_]* SET_STRING; return IDENTIFIER;
|
|
|
+// [a-zA-Z_][a-zA-Z0-9_]* CREATE_STRING; return IDENTIFIER;
|
|
|
|
|
|
|
|
|
/*
|