• R/O
  • HTTP
  • SSH
  • HTTPS

Commit

Tags
No Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

programming language


Commit MetaInfo

Revisiónd4aa99410ac8e919edf228d191e77039eb978bad (tree)
Tiempo2022-06-26 22:30:01
Autordhrname <dhrname@joes...>
Commiterdhrname

Log Message

Modify the lexer

Cambiar Resumen

Diferencia incremental

Binary files a/bin/obj/lex.o and b/bin/obj/lex.o differ
Binary files a/bin/obj/main.o and b/bin/obj/main.o differ
--- a/include/phrase.hpp
+++ b/include/phrase.hpp
@@ -91,6 +91,7 @@ namespace jstr
9191 , FOR
9292 , IF
9393 , ELSE
94+ , ELSEIF
9495 , CONTINUE
9596 , BREAK
9697 , RETURN
@@ -669,6 +670,12 @@ namespace jstr
669670 }
670671 };
671672
673+ /*VoidTypeValue クラス
674+ * 何も返さないvoid型を示すクラス*/
675+ class VoidTypeValue: public Phrase
676+ {
677+ };
678+
672679 /*FunctorStatement クラス
673680 * 関手宣言を示すクラス
674681 * Functorクラスとは異なる*/
--- a/lex.l
+++ b/lex.l
@@ -56,6 +56,7 @@ namespace jstr
5656 , FOR
5757 , IF
5858 , ELSE
59+ , ELSEIF
5960 , CONTINUE
6061 , BREAK
6162 , RETURN
@@ -166,6 +167,7 @@ DIGIT [1-9][0-9]*
166167 "for" return jstr::parser::token::FOR ;
167168 "if" return jstr::parser::token::IF ;
168169 "else" return jstr::parser::token::ELSE ;
170+"elif" return jstr::parser::token::ELSEIF ;
169171 "continue" return jstr::parser::token::CONTINUE ;
170172 "break" return jstr::parser::token::BREAK ;
171173 "return" return jstr::parser::token::RETURN ;
--- a/lex.yy.cc
+++ b/lex.yy.cc
@@ -385,8 +385,8 @@ int yyFlexLexer::yywrap() { return 1; }
385385 /* %% [3.0] code to copy yytext_ptr to yytext[] goes here, if %array \ */\
386386 (yy_c_buf_p) = yy_cp;
387387 /* %% [4.0] data tables for the DFA and the user's section 1 definitions go here */
388-#define YY_NUM_RULES 91
389-#define YY_END_OF_BUFFER 92
388+#define YY_NUM_RULES 92
389+#define YY_END_OF_BUFFER 93
390390 /* This struct is not used in this scanner,
391391 but its presence is necessary. */
392392 struct yy_trans_info
@@ -394,32 +394,32 @@ struct yy_trans_info
394394 flex_int32_t yy_verify;
395395 flex_int32_t yy_nxt;
396396 };
397-static const flex_int16_t yy_accept[217] =
397+static const flex_int16_t yy_accept[219] =
398398 { 0,
399- 0, 0, 92, 91, 89, 89, 75, 91, 91, 74,
400- 91, 79, 80, 72, 70, 35, 71, 78, 73, 91,
401- 85, 49, 38, 64, 52, 65, 81, 84, 84, 84,
402- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
403- 84, 84, 84, 84, 36, 91, 37, 90, 90, 89,
404- 63, 0, 87, 0, 88, 55, 61, 53, 76, 56,
405- 77, 57, 0, 86, 54, 0, 0, 85, 68, 66,
406- 62, 67, 69, 84, 84, 84, 84, 84, 84, 84,
407- 84, 84, 84, 84, 84, 40, 84, 84, 84, 84,
408- 84, 84, 84, 84, 84, 42, 84, 19, 84, 84,
409-
410- 84, 84, 84, 84, 84, 84, 84, 84, 84, 84,
411- 84, 84, 60, 90, 90, 87, 34, 0, 58, 59,
412- 15, 84, 9, 10, 11, 12, 84, 84, 84, 29,
413- 84, 84, 84, 33, 28, 14, 84, 84, 84, 84,
414- 13, 41, 1, 2, 3, 4, 84, 17, 23, 16,
415- 84, 84, 84, 84, 84, 84, 5, 6, 7, 8,
416- 18, 84, 84, 0, 84, 31, 26, 84, 84, 84,
417- 84, 84, 43, 84, 84, 84, 84, 84, 84, 84,
418- 51, 24, 27, 84, 84, 86, 45, 22, 20, 84,
419- 84, 84, 47, 84, 84, 84, 48, 84, 84, 84,
420-
421- 39, 86, 84, 25, 32, 83, 82, 50, 30, 46,
422- 84, 84, 84, 44, 21, 0
399+ 0, 0, 93, 92, 90, 90, 76, 92, 92, 75,
400+ 92, 80, 81, 73, 71, 35, 72, 79, 74, 92,
401+ 86, 50, 38, 65, 53, 66, 82, 85, 85, 85,
402+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
403+ 85, 85, 85, 85, 36, 92, 37, 91, 91, 90,
404+ 64, 0, 88, 0, 89, 56, 62, 54, 77, 57,
405+ 78, 58, 0, 87, 55, 0, 0, 86, 69, 67,
406+ 63, 68, 70, 85, 85, 85, 85, 85, 85, 85,
407+ 85, 85, 85, 85, 85, 40, 85, 85, 85, 85,
408+ 85, 85, 85, 85, 85, 42, 85, 19, 85, 85,
409+
410+ 85, 85, 85, 85, 85, 85, 85, 85, 85, 85,
411+ 85, 85, 61, 91, 91, 88, 34, 0, 59, 60,
412+ 15, 85, 9, 10, 11, 12, 85, 85, 85, 29,
413+ 85, 85, 85, 33, 28, 14, 85, 85, 85, 85,
414+ 85, 13, 41, 1, 2, 3, 4, 85, 17, 23,
415+ 16, 85, 85, 85, 85, 85, 85, 5, 6, 7,
416+ 8, 18, 85, 85, 0, 85, 31, 26, 85, 85,
417+ 85, 85, 85, 44, 43, 85, 85, 85, 85, 85,
418+ 85, 85, 52, 24, 27, 85, 85, 87, 46, 22,
419+ 20, 85, 85, 85, 48, 85, 85, 85, 49, 85,
420+
421+ 85, 85, 39, 87, 85, 25, 32, 84, 83, 51,
422+ 30, 47, 85, 85, 85, 45, 21, 0
423423 } ;
424424
425425 static const YY_CHAR yy_ec[256] =
@@ -464,65 +464,65 @@ static const YY_CHAR yy_meta[60] =
464464 5, 5, 5, 5, 5, 5, 1, 1, 1
465465 } ;
466466
467-static const flex_int16_t yy_base[223] =
467+static const flex_int16_t yy_base[225] =
468468 { 0,
469- 0, 58, 284, 285, 285, 280, 253, 275, 277, 250,
470- 269, 285, 285, 248, 48, 285, 47, 260, 246, 258,
471- 257, 285, 285, 37, 243, 38, 285, 0, 22, 54,
472- 42, 30, 37, 72, 237, 232, 234, 219, 229, 218,
473- 30, 76, 218, 224, 285, 205, 285, 97, 100, 285,
474- 285, 256, 255, 257, 285, 285, 285, 285, 285, 285,
475- 285, 285, 243, 71, 285, 102, 242, 241, 227, 285,
476- 285, 285, 226, 0, 210, 215, 227, 227, 230, 227,
477- 63, 214, 68, 64, 205, 83, 196, 196, 82, 197,
478- 194, 217, 217, 220, 217, 0, 190, 0, 192, 182,
479-
480- 193, 193, 81, 195, 191, 183, 205, 205, 208, 205,
481- 92, 185, 285, 110, 132, 135, 285, 127, 285, 285,
482- 0, 191, 0, 0, 0, 0, 180, 185, 172, 0,
483- 93, 183, 186, 0, 0, 0, 181, 171, 179, 178,
484- 0, 0, 0, 0, 0, 0, 168, 0, 0, 0,
485- 168, 161, 160, 175, 160, 171, 0, 0, 0, 0,
486- 0, 174, 163, 126, 163, 0, 0, 155, 153, 162,
487- 151, 165, 0, 151, 151, 162, 148, 145, 150, 145,
488- 0, 0, 0, 142, 154, 134, 0, 0, 0, 145,
489- 152, 149, 0, 137, 136, 135, 0, 131, 93, 88,
490-
491- 0, 142, 58, 0, 0, 0, 0, 0, 0, 0,
492- 48, 44, 25, 0, 0, 285, 167, 172, 175, 177,
493- 179, 180
469+ 0, 58, 286, 287, 287, 282, 255, 277, 279, 252,
470+ 271, 287, 287, 250, 48, 287, 47, 262, 248, 260,
471+ 259, 287, 287, 37, 245, 38, 287, 0, 22, 54,
472+ 42, 30, 37, 72, 239, 234, 236, 221, 231, 220,
473+ 30, 76, 220, 226, 287, 207, 287, 97, 100, 287,
474+ 287, 258, 257, 259, 287, 287, 287, 287, 287, 287,
475+ 287, 287, 245, 71, 287, 102, 244, 243, 229, 287,
476+ 287, 287, 228, 0, 212, 217, 229, 229, 232, 229,
477+ 63, 216, 68, 64, 207, 83, 88, 199, 82, 200,
478+ 197, 220, 220, 223, 220, 0, 193, 0, 195, 185,
479+
480+ 196, 196, 81, 198, 194, 186, 208, 208, 211, 208,
481+ 92, 188, 287, 110, 135, 137, 287, 127, 287, 287,
482+ 0, 194, 0, 0, 0, 0, 183, 188, 175, 0,
483+ 94, 186, 189, 0, 0, 0, 183, 183, 173, 181,
484+ 180, 0, 0, 0, 0, 0, 0, 170, 0, 0,
485+ 0, 170, 163, 162, 177, 162, 173, 0, 0, 0,
486+ 0, 0, 176, 165, 127, 165, 0, 0, 157, 155,
487+ 164, 153, 167, 0, 0, 153, 153, 164, 150, 147,
488+ 152, 147, 0, 0, 0, 144, 156, 135, 0, 0,
489+ 0, 147, 154, 151, 0, 139, 138, 137, 0, 149,
490+
491+ 124, 93, 0, 143, 58, 0, 0, 0, 0, 0,
492+ 0, 0, 48, 44, 25, 0, 0, 287, 168, 173,
493+ 176, 178, 180, 181
494494 } ;
495495
496-static const flex_int16_t yy_def[223] =
496+static const flex_int16_t yy_def[225] =
497497 { 0,
498- 216, 1, 216, 216, 216, 216, 216, 217, 218, 216,
499- 216, 216, 216, 216, 216, 216, 216, 219, 216, 220,
500- 221, 216, 216, 216, 216, 216, 216, 222, 222, 222,
501- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
502- 222, 222, 222, 222, 216, 216, 216, 216, 217, 216,
503- 216, 217, 217, 218, 216, 216, 216, 216, 216, 216,
504- 216, 216, 216, 219, 216, 216, 220, 221, 216, 216,
505- 216, 216, 216, 222, 222, 222, 222, 222, 222, 222,
506- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
507- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
508-
509- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
510- 222, 222, 216, 216, 217, 217, 216, 216, 216, 216,
511- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
512- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
513- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
514- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
515- 222, 222, 222, 216, 222, 222, 222, 222, 222, 222,
516- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
517- 222, 222, 222, 222, 222, 216, 222, 222, 222, 222,
518- 222, 222, 222, 222, 222, 222, 222, 222, 222, 222,
519-
520- 222, 216, 222, 222, 222, 222, 222, 222, 222, 222,
521- 222, 222, 222, 222, 222, 0, 216, 216, 216, 216,
522- 216, 216
498+ 218, 1, 218, 218, 218, 218, 218, 219, 220, 218,
499+ 218, 218, 218, 218, 218, 218, 218, 221, 218, 222,
500+ 223, 218, 218, 218, 218, 218, 218, 224, 224, 224,
501+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
502+ 224, 224, 224, 224, 218, 218, 218, 218, 219, 218,
503+ 218, 219, 219, 220, 218, 218, 218, 218, 218, 218,
504+ 218, 218, 218, 221, 218, 218, 222, 223, 218, 218,
505+ 218, 218, 218, 224, 224, 224, 224, 224, 224, 224,
506+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
507+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
508+
509+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
510+ 224, 224, 218, 218, 219, 219, 218, 218, 218, 218,
511+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
512+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
513+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
514+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
515+ 224, 224, 224, 224, 218, 224, 224, 224, 224, 224,
516+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
517+ 224, 224, 224, 224, 224, 224, 224, 218, 224, 224,
518+ 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
519+
520+ 224, 224, 224, 218, 224, 224, 224, 224, 224, 224,
521+ 224, 224, 224, 224, 224, 224, 224, 0, 218, 218,
522+ 218, 218, 218, 218
523523 } ;
524524
525-static const flex_int16_t yy_nxt[345] =
525+static const flex_int16_t yy_nxt[347] =
526526 { 0,
527527 4, 4, 5, 6, 7, 8, 9, 10, 11, 12,
528528 13, 14, 15, 16, 17, 18, 19, 20, 21, 21,
@@ -530,41 +530,41 @@ static const flex_int16_t yy_nxt[345] =
530530 27, 28, 28, 28, 29, 30, 31, 32, 33, 28,
531531 34, 28, 28, 35, 28, 36, 37, 38, 39, 40,
532532 41, 42, 43, 44, 28, 28, 45, 46, 47, 48,
533- 59, 61, 215, 49, 69, 70, 72, 73, 75, 105,
533+ 59, 61, 217, 49, 69, 70, 72, 73, 75, 105,
534534 76, 77, 78, 87, 79, 62, 60, 80, 88, 84,
535- 90, 214, 85, 91, 89, 106, 216, 81, 86, 92,
536- 93, 213, 94, 107, 108, 95, 109, 82, 114, 110,
537-
538- 83, 115, 114, 118, 130, 116, 127, 132, 118, 212,
539- 96, 114, 128, 131, 133, 114, 97, 139, 98, 64,
540- 64, 64, 64, 64, 64, 64, 64, 135, 211, 140,
541- 152, 153, 161, 115, 136, 162, 115, 116, 210, 164,
542- 116, 164, 169, 170, 186, 186, 186, 186, 186, 186,
543- 186, 202, 202, 202, 202, 202, 202, 202, 202, 202,
544- 202, 202, 202, 202, 202, 202, 202, 52, 209, 52,
545- 52, 52, 54, 54, 54, 54, 54, 64, 64, 67,
546- 67, 68, 68, 74, 74, 208, 207, 206, 205, 204,
547- 203, 201, 200, 199, 198, 197, 196, 195, 194, 193,
548-
549- 192, 191, 190, 189, 188, 187, 185, 184, 183, 182,
550- 181, 180, 179, 178, 177, 176, 175, 174, 173, 172,
551- 171, 168, 167, 166, 165, 163, 160, 159, 158, 157,
552- 156, 155, 154, 151, 150, 149, 148, 147, 146, 145,
553- 144, 143, 142, 141, 138, 137, 134, 129, 126, 125,
554- 124, 123, 122, 121, 120, 119, 66, 66, 117, 55,
555- 53, 53, 113, 112, 111, 104, 103, 102, 101, 100,
556- 99, 71, 66, 66, 65, 63, 58, 57, 56, 55,
557- 53, 51, 50, 216, 3, 216, 216, 216, 216, 216,
558- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
559-
560- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
561- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
562- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
563- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
564- 216, 216, 216, 216
535+ 90, 216, 85, 91, 89, 106, 218, 81, 86, 92,
536+ 93, 215, 94, 107, 108, 95, 109, 82, 114, 110,
537+
538+ 83, 115, 114, 118, 130, 116, 127, 132, 118, 214,
539+ 96, 114, 128, 131, 133, 114, 97, 140, 98, 64,
540+ 64, 64, 64, 64, 64, 64, 64, 135, 137, 141,
541+ 153, 154, 162, 213, 136, 163, 115, 138, 115, 165,
542+ 116, 165, 116, 170, 171, 188, 188, 188, 188, 188,
543+ 188, 188, 204, 204, 204, 204, 204, 204, 204, 204,
544+ 204, 204, 204, 204, 204, 204, 204, 204, 52, 212,
545+ 52, 52, 52, 54, 54, 54, 54, 54, 64, 64,
546+ 67, 67, 68, 68, 74, 74, 211, 210, 209, 208,
547+ 207, 206, 205, 203, 202, 201, 200, 199, 198, 197,
548+
549+ 196, 195, 194, 193, 192, 191, 190, 189, 187, 186,
550+ 185, 184, 183, 182, 181, 180, 179, 178, 177, 176,
551+ 175, 174, 173, 172, 169, 168, 167, 166, 164, 161,
552+ 160, 159, 158, 157, 156, 155, 152, 151, 150, 149,
553+ 148, 147, 146, 145, 144, 143, 142, 139, 134, 129,
554+ 126, 125, 124, 123, 122, 121, 120, 119, 66, 66,
555+ 117, 55, 53, 53, 113, 112, 111, 104, 103, 102,
556+ 101, 100, 99, 71, 66, 66, 65, 63, 58, 57,
557+ 56, 55, 53, 51, 50, 218, 3, 218, 218, 218,
558+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
559+
560+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
561+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
562+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
563+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
564+ 218, 218, 218, 218, 218, 218
565565 } ;
566566
567-static const flex_int16_t yy_chk[345] =
567+static const flex_int16_t yy_chk[347] =
568568 { 0,
569569 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
570570 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
@@ -572,51 +572,53 @@ static const flex_int16_t yy_chk[345] =
572572 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
573573 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
574574 1, 1, 1, 1, 1, 1, 1, 1, 1, 2,
575- 15, 17, 213, 2, 24, 24, 26, 26, 29, 41,
575+ 15, 17, 215, 2, 24, 24, 26, 26, 29, 41,
576576 29, 30, 30, 32, 30, 17, 15, 30, 32, 31,
577- 33, 212, 31, 33, 32, 41, 64, 30, 31, 34,
578- 34, 211, 34, 42, 42, 34, 42, 30, 48, 42,
577+ 33, 214, 31, 33, 32, 41, 64, 30, 31, 34,
578+ 34, 213, 34, 42, 42, 34, 42, 30, 48, 42,
579579
580- 30, 49, 48, 64, 83, 49, 81, 84, 64, 203,
580+ 30, 49, 48, 64, 83, 49, 81, 84, 64, 205,
581581 34, 114, 81, 83, 84, 114, 34, 89, 34, 66,
582- 66, 66, 66, 66, 66, 66, 66, 86, 200, 89,
583- 103, 103, 111, 115, 86, 111, 116, 115, 199, 118,
584- 116, 118, 131, 131, 164, 164, 164, 164, 164, 164,
585- 164, 186, 186, 186, 186, 186, 186, 186, 186, 202,
586- 202, 202, 202, 202, 202, 202, 202, 217, 198, 217,
587- 217, 217, 218, 218, 218, 218, 218, 219, 219, 220,
588- 220, 221, 221, 222, 222, 196, 195, 194, 192, 191,
589- 190, 185, 184, 180, 179, 178, 177, 176, 175, 174,
590-
591- 172, 171, 170, 169, 168, 165, 163, 162, 156, 155,
592- 154, 153, 152, 151, 147, 140, 139, 138, 137, 133,
593- 132, 129, 128, 127, 122, 112, 110, 109, 108, 107,
594- 106, 105, 104, 102, 101, 100, 99, 97, 95, 94,
595- 93, 92, 91, 90, 88, 87, 85, 82, 80, 79,
596- 78, 77, 76, 75, 73, 69, 68, 67, 63, 54,
597- 53, 52, 46, 44, 43, 40, 39, 38, 37, 36,
598- 35, 25, 21, 20, 19, 18, 14, 11, 10, 9,
599- 8, 7, 6, 3, 216, 216, 216, 216, 216, 216,
600- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
601-
602- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
603- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
604- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
605- 216, 216, 216, 216, 216, 216, 216, 216, 216, 216,
606- 216, 216, 216, 216
582+ 66, 66, 66, 66, 66, 66, 66, 86, 87, 89,
583+ 103, 103, 111, 202, 86, 111, 115, 87, 116, 118,
584+ 115, 118, 116, 131, 131, 165, 165, 165, 165, 165,
585+ 165, 165, 188, 188, 188, 188, 188, 188, 188, 188,
586+ 204, 204, 204, 204, 204, 204, 204, 204, 219, 201,
587+ 219, 219, 219, 220, 220, 220, 220, 220, 221, 221,
588+ 222, 222, 223, 223, 224, 224, 200, 198, 197, 196,
589+ 194, 193, 192, 187, 186, 182, 181, 180, 179, 178,
590+
591+ 177, 176, 173, 172, 171, 170, 169, 166, 164, 163,
592+ 157, 156, 155, 154, 153, 152, 148, 141, 140, 139,
593+ 138, 137, 133, 132, 129, 128, 127, 122, 112, 110,
594+ 109, 108, 107, 106, 105, 104, 102, 101, 100, 99,
595+ 97, 95, 94, 93, 92, 91, 90, 88, 85, 82,
596+ 80, 79, 78, 77, 76, 75, 73, 69, 68, 67,
597+ 63, 54, 53, 52, 46, 44, 43, 40, 39, 38,
598+ 37, 36, 35, 25, 21, 20, 19, 18, 14, 11,
599+ 10, 9, 8, 7, 6, 3, 218, 218, 218, 218,
600+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
601+
602+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
603+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
604+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
605+ 218, 218, 218, 218, 218, 218, 218, 218, 218, 218,
606+ 218, 218, 218, 218, 218, 218
607607 } ;
608608
609-static const flex_int16_t yy_rule_linenum[91] =
609+static const flex_int16_t yy_rule_linenum[92] =
610610 { 0,
611- 122, 123, 124, 125, 126, 127, 128, 129, 130, 131,
612- 132, 133, 134, 135, 136, 137, 138, 139, 140, 142,
613- 143, 145, 146, 147, 148, 150, 151, 152, 153, 154,
614- 155, 156, 157, 158, 159, 161, 162, 163, 164, 165,
615- 166, 167, 168, 169, 170, 171, 172, 173, 174, 176,
616- 177, 179, 180, 181, 182, 183, 184, 185, 186, 188,
617- 189, 190, 191, 192, 193, 194, 195, 196, 197, 199,
618- 200, 201, 202, 203, 204, 205, 206, 208, 209, 210,
619- 211, 212, 213, 216, 217, 218, 219, 221, 222, 223
611+ 123, 124, 125, 126, 127, 128, 129, 130, 131, 132,
612+ 133, 134, 135, 136, 137, 138, 139, 140, 141, 143,
613+ 144, 146, 147, 148, 149, 151, 152, 153, 154, 155,
614+ 156, 157, 158, 159, 160, 162, 163, 164, 165, 166,
615+ 167, 168, 169, 170, 171, 172, 173, 174, 175, 176,
616+ 178, 179, 181, 182, 183, 184, 185, 186, 187, 188,
617+ 190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
618+ 201, 202, 203, 204, 205, 206, 207, 208, 210, 211,
619+ 212, 213, 214, 215, 218, 219, 220, 221, 223, 224,
620+ 225
621+
620622 } ;
621623
622624 /* The intent behind this definition is that it'll catch
@@ -685,6 +687,7 @@ namespace jstr
685687 , FOR
686688 , IF
687689 , ELSE
690+ , ELSEIF
688691 , CONTINUE
689692 , BREAK
690693 , RETURN
@@ -738,9 +741,9 @@ namespace jstr
738741 }
739742 }
740743
741-#line 741 "lex.yy.cc"
744+#line 744 "lex.yy.cc"
742745 #define YY_NO_INPUT 1
743-#line 743 "lex.yy.cc"
746+#line 746 "lex.yy.cc"
744747
745748 #define INITIAL 0
746749
@@ -935,10 +938,10 @@ YY_DECL
935938
936939 {
937940 /* %% [7.0] user's declarations go here */
938-#line 120 "lex.l"
941+#line 121 "lex.l"
939942
940943
941-#line 941 "lex.yy.cc"
944+#line 944 "lex.yy.cc"
942945
943946 while ( /*CONSTCOND*/1 ) /* loops until end-of-file is reached */
944947 {
@@ -968,13 +971,13 @@ yy_match:
968971 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
969972 {
970973 yy_current_state = (int) yy_def[yy_current_state];
971- if ( yy_current_state >= 217 )
974+ if ( yy_current_state >= 219 )
972975 yy_c = yy_meta[yy_c];
973976 }
974977 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
975978 ++yy_cp;
976979 }
977- while ( yy_current_state != 216 );
980+ while ( yy_current_state != 218 );
978981 yy_cp = (yy_last_accepting_cpos);
979982 yy_current_state = (yy_last_accepting_state);
980983
@@ -993,12 +996,12 @@ do_action: /* This label is used only to access EOF actions. */
993996 {
994997 if ( yy_act == 0 )
995998 std::cerr << "--scanner backing up\n";
996- else if ( yy_act < 91 )
999+ else if ( yy_act < 92 )
9971000 std::cerr << "--accepting rule at line " << yy_rule_linenum[yy_act] <<
9981001 "(\"" << yytext << "\")\n";
999- else if ( yy_act == 91 )
1000- std::cerr << "--accepting default rule (\"" << yytext << "\")\n";
10011002 else if ( yy_act == 92 )
1003+ std::cerr << "--accepting default rule (\"" << yytext << "\")\n";
1004+ else if ( yy_act == 93 )
10021005 std::cerr << "--(end of buffer or a NUL)\n";
10031006 else
10041007 std::cerr << "--EOF (start condition " << YY_START << ")\n";
@@ -1016,462 +1019,467 @@ do_action: /* This label is used only to access EOF actions. */
10161019
10171020 case 1:
10181021 YY_RULE_SETUP
1019-#line 122 "lex.l"
1022+#line 123 "lex.l"
10201023 return jstr::parser::token::INTEGER8 ;
10211024 YY_BREAK
10221025 case 2:
10231026 YY_RULE_SETUP
1024-#line 123 "lex.l"
1027+#line 124 "lex.l"
10251028 return jstr::parser::token::INTEGER16 ;
10261029 YY_BREAK
10271030 case 3:
10281031 YY_RULE_SETUP
1029-#line 124 "lex.l"
1032+#line 125 "lex.l"
10301033 return jstr::parser::token::INTEGER32 ;
10311034 YY_BREAK
10321035 case 4:
10331036 YY_RULE_SETUP
1034-#line 125 "lex.l"
1037+#line 126 "lex.l"
10351038 return jstr::parser::token::INTEGER64 ;
10361039 YY_BREAK
10371040 case 5:
10381041 YY_RULE_SETUP
1039-#line 126 "lex.l"
1042+#line 127 "lex.l"
10401043 return jstr::parser::token::UINTEGER8 ;
10411044 YY_BREAK
10421045 case 6:
10431046 YY_RULE_SETUP
1044-#line 127 "lex.l"
1047+#line 128 "lex.l"
10451048 return jstr::parser::token::UINTEGER16 ;
10461049 YY_BREAK
10471050 case 7:
10481051 YY_RULE_SETUP
1049-#line 128 "lex.l"
1052+#line 129 "lex.l"
10501053 return jstr::parser::token::UINTEGER32 ;
10511054 YY_BREAK
10521055 case 8:
10531056 YY_RULE_SETUP
1054-#line 129 "lex.l"
1057+#line 130 "lex.l"
10551058 return jstr::parser::token::UINTEGER64 ;
10561059 YY_BREAK
10571060 case 9:
10581061 YY_RULE_SETUP
1059-#line 130 "lex.l"
1062+#line 131 "lex.l"
10601063 return jstr::parser::token::CHARACTER8 ;
10611064 YY_BREAK
10621065 case 10:
10631066 YY_RULE_SETUP
1064-#line 131 "lex.l"
1067+#line 132 "lex.l"
10651068 return jstr::parser::token::CHARACTER16 ;
10661069 YY_BREAK
10671070 case 11:
10681071 YY_RULE_SETUP
1069-#line 132 "lex.l"
1072+#line 133 "lex.l"
10701073 return jstr::parser::token::CHARACTER32 ;
10711074 YY_BREAK
10721075 case 12:
10731076 YY_RULE_SETUP
1074-#line 133 "lex.l"
1077+#line 134 "lex.l"
10751078 return jstr::parser::token::CHARACTER64 ;
10761079 YY_BREAK
10771080 case 13:
10781081 YY_RULE_SETUP
1079-#line 134 "lex.l"
1082+#line 135 "lex.l"
10801083 return jstr::parser::token::FLOAT ;
10811084 YY_BREAK
10821085 case 14:
10831086 YY_RULE_SETUP
1084-#line 135 "lex.l"
1087+#line 136 "lex.l"
10851088 return jstr::parser::token::DOUBLE ;
10861089 YY_BREAK
10871090 case 15:
10881091 YY_RULE_SETUP
1089-#line 136 "lex.l"
1092+#line 137 "lex.l"
10901093 return jstr::parser::token::BOOLEAN ;
10911094 YY_BREAK
10921095 case 16:
10931096 YY_RULE_SETUP
1094-#line 137 "lex.l"
1097+#line 138 "lex.l"
10951098 return jstr::parser::token::OBJECT ;
10961099 YY_BREAK
10971100 case 17:
10981101 YY_RULE_SETUP
1099-#line 138 "lex.l"
1102+#line 139 "lex.l"
11001103 return jstr::parser::token::LAMBDA ;
11011104 YY_BREAK
11021105 case 18:
11031106 YY_RULE_SETUP
1104-#line 139 "lex.l"
1107+#line 140 "lex.l"
11051108 return jstr::parser::token::VOID ;
11061109 YY_BREAK
11071110 case 19:
11081111 YY_RULE_SETUP
1109-#line 140 "lex.l"
1112+#line 141 "lex.l"
11101113 return jstr::parser::token::INOUT ;
11111114 YY_BREAK
11121115 case 20:
11131116 YY_RULE_SETUP
1114-#line 142 "lex.l"
1117+#line 143 "lex.l"
11151118 return jstr::parser::token::CONST ;
11161119 YY_BREAK
11171120 case 21:
11181121 YY_RULE_SETUP
1119-#line 143 "lex.l"
1122+#line 144 "lex.l"
11201123 return jstr::parser::token::VOLATILE ;
11211124 YY_BREAK
11221125 case 22:
11231126 YY_RULE_SETUP
1124-#line 145 "lex.l"
1127+#line 146 "lex.l"
11251128 return jstr::parser::token::CLASS ;
11261129 YY_BREAK
11271130 case 23:
11281131 YY_RULE_SETUP
1129-#line 146 "lex.l"
1132+#line 147 "lex.l"
11301133 return jstr::parser::token::NEW ;
11311134 YY_BREAK
11321135 case 24:
11331136 YY_RULE_SETUP
1134-#line 147 "lex.l"
1137+#line 148 "lex.l"
11351138 return jstr::parser::token::THIS ;
11361139 YY_BREAK
11371140 case 25:
11381141 YY_RULE_SETUP
1139-#line 148 "lex.l"
1142+#line 149 "lex.l"
11401143 return jstr::parser::token::DELETE ;
11411144 YY_BREAK
11421145 case 26:
11431146 YY_RULE_SETUP
1144-#line 150 "lex.l"
1147+#line 151 "lex.l"
11451148 return jstr::parser::token::CASE ;
11461149 YY_BREAK
11471150 case 27:
11481151 YY_RULE_SETUP
1149-#line 151 "lex.l"
1152+#line 152 "lex.l"
11501153 return jstr::parser::token::TYPE ;
11511154 YY_BREAK
11521155 case 28:
11531156 YY_RULE_SETUP
1154-#line 152 "lex.l"
1157+#line 153 "lex.l"
11551158 return jstr::parser::token::JDOMAIN ;
11561159 YY_BREAK
11571160 case 29:
11581161 YY_RULE_SETUP
1159-#line 153 "lex.l"
1162+#line 154 "lex.l"
11601163 return jstr::parser::token::CODOMAIN ;
11611164 YY_BREAK
11621165 case 30:
11631166 YY_RULE_SETUP
1164-#line 154 "lex.l"
1167+#line 155 "lex.l"
11651168 return jstr::parser::token::RESUME ;
11661169 YY_BREAK
11671170 case 31:
11681171 YY_RULE_SETUP
1169-#line 155 "lex.l"
1172+#line 156 "lex.l"
11701173 return jstr::parser::token::CALL ;
11711174 YY_BREAK
11721175 case 32:
11731176 YY_RULE_SETUP
1174-#line 156 "lex.l"
1177+#line 157 "lex.l"
11751178 return jstr::parser::token::DETACH ;
11761179 YY_BREAK
11771180 case 33:
11781181 YY_RULE_SETUP
1179-#line 157 "lex.l"
1182+#line 158 "lex.l"
11801183 return jstr::parser::token::DIJKSTRA ;
11811184 YY_BREAK
11821185 case 34:
11831186 YY_RULE_SETUP
1184-#line 158 "lex.l"
1187+#line 159 "lex.l"
11851188 return jstr::parser::token::ARGUMENTETCETRA ;
11861189 YY_BREAK
11871190 case 35:
11881191 YY_RULE_SETUP
1189-#line 159 "lex.l"
1192+#line 160 "lex.l"
11901193 return jstr::parser::token::ARGUMENTSEPARATOR ;
11911194 YY_BREAK
11921195 case 36:
11931196 YY_RULE_SETUP
1194-#line 161 "lex.l"
1197+#line 162 "lex.l"
11951198 return jstr::parser::token::JBEGIN ;
11961199 YY_BREAK
11971200 case 37:
11981201 YY_RULE_SETUP
1199-#line 162 "lex.l"
1202+#line 163 "lex.l"
12001203 return jstr::parser::token::END ;
12011204 YY_BREAK
12021205 case 38:
12031206 YY_RULE_SETUP
1204-#line 163 "lex.l"
1207+#line 164 "lex.l"
12051208 return jstr::parser::token::LINEEND ;
12061209 YY_BREAK
12071210 case 39:
12081211 YY_RULE_SETUP
1209-#line 164 "lex.l"
1212+#line 165 "lex.l"
12101213 return jstr::parser::token::WHILE ;
12111214 YY_BREAK
12121215 case 40:
12131216 YY_RULE_SETUP
1214-#line 165 "lex.l"
1217+#line 166 "lex.l"
12151218 return jstr::parser::token::DO ;
12161219 YY_BREAK
12171220 case 41:
12181221 YY_RULE_SETUP
1219-#line 166 "lex.l"
1222+#line 167 "lex.l"
12201223 return jstr::parser::token::FOR ;
12211224 YY_BREAK
12221225 case 42:
12231226 YY_RULE_SETUP
1224-#line 167 "lex.l"
1227+#line 168 "lex.l"
12251228 return jstr::parser::token::IF ;
12261229 YY_BREAK
12271230 case 43:
12281231 YY_RULE_SETUP
1229-#line 168 "lex.l"
1232+#line 169 "lex.l"
12301233 return jstr::parser::token::ELSE ;
12311234 YY_BREAK
12321235 case 44:
12331236 YY_RULE_SETUP
1234-#line 169 "lex.l"
1235-return jstr::parser::token::CONTINUE ;
1237+#line 170 "lex.l"
1238+return jstr::parser::token::ELSEIF ;
12361239 YY_BREAK
12371240 case 45:
12381241 YY_RULE_SETUP
1239-#line 170 "lex.l"
1240-return jstr::parser::token::BREAK ;
1242+#line 171 "lex.l"
1243+return jstr::parser::token::CONTINUE ;
12411244 YY_BREAK
12421245 case 46:
12431246 YY_RULE_SETUP
1244-#line 171 "lex.l"
1245-return jstr::parser::token::RETURN ;
1247+#line 172 "lex.l"
1248+return jstr::parser::token::BREAK ;
12461249 YY_BREAK
12471250 case 47:
12481251 YY_RULE_SETUP
1249-#line 172 "lex.l"
1250-return jstr::parser::token::JERROR ;
1252+#line 173 "lex.l"
1253+return jstr::parser::token::RETURN ;
12511254 YY_BREAK
12521255 case 48:
12531256 YY_RULE_SETUP
1254-#line 173 "lex.l"
1255-return jstr::parser::token::PRINT ;
1257+#line 174 "lex.l"
1258+return jstr::parser::token::JERROR ;
12561259 YY_BREAK
12571260 case 49:
12581261 YY_RULE_SETUP
1259-#line 174 "lex.l"
1260-return jstr::parser::token::COLON ;
1262+#line 175 "lex.l"
1263+return jstr::parser::token::PRINT ;
12611264 YY_BREAK
12621265 case 50:
12631266 YY_RULE_SETUP
12641267 #line 176 "lex.l"
1265-return jstr::parser::token::INCLUDE ;
1268+return jstr::parser::token::COLON ;
12661269 YY_BREAK
12671270 case 51:
12681271 YY_RULE_SETUP
1269-#line 177 "lex.l"
1270-return jstr::parser::token::TEST ;
1272+#line 178 "lex.l"
1273+return jstr::parser::token::INCLUDE ;
12711274 YY_BREAK
12721275 case 52:
12731276 YY_RULE_SETUP
12741277 #line 179 "lex.l"
1275-return jstr::parser::token::ASSIGN ;
1278+return jstr::parser::token::TEST ;
12761279 YY_BREAK
12771280 case 53:
12781281 YY_RULE_SETUP
1279-#line 180 "lex.l"
1280-return jstr::parser::token::ASSIGNMUL ;
1282+#line 181 "lex.l"
1283+return jstr::parser::token::ASSIGN ;
12811284 YY_BREAK
12821285 case 54:
12831286 YY_RULE_SETUP
1284-#line 181 "lex.l"
1285-return jstr::parser::token::ASSIGNDIV ;
1287+#line 182 "lex.l"
1288+return jstr::parser::token::ASSIGNMUL ;
12861289 YY_BREAK
12871290 case 55:
12881291 YY_RULE_SETUP
1289-#line 182 "lex.l"
1290-return jstr::parser::token::ASSIGNREMAINDER ;
1292+#line 183 "lex.l"
1293+return jstr::parser::token::ASSIGNDIV ;
12911294 YY_BREAK
12921295 case 56:
12931296 YY_RULE_SETUP
1294-#line 183 "lex.l"
1295-return jstr::parser::token::ASSIGNADD ;
1297+#line 184 "lex.l"
1298+return jstr::parser::token::ASSIGNREMAINDER ;
12961299 YY_BREAK
12971300 case 57:
12981301 YY_RULE_SETUP
1299-#line 184 "lex.l"
1300-return jstr::parser::token::ASSIGNSUB ;
1302+#line 185 "lex.l"
1303+return jstr::parser::token::ASSIGNADD ;
13011304 YY_BREAK
13021305 case 58:
13031306 YY_RULE_SETUP
1304-#line 185 "lex.l"
1305-return jstr::parser::token::ASSIGNSHIFTLEFT ;
1307+#line 186 "lex.l"
1308+return jstr::parser::token::ASSIGNSUB ;
13061309 YY_BREAK
13071310 case 59:
13081311 YY_RULE_SETUP
1309-#line 186 "lex.l"
1310-return jstr::parser::token::ASSIGNSHIFTRIGHT ;
1312+#line 187 "lex.l"
1313+return jstr::parser::token::ASSIGNSHIFTLEFT ;
13111314 YY_BREAK
13121315 case 60:
13131316 YY_RULE_SETUP
13141317 #line 188 "lex.l"
1315-return jstr::parser::token::OR ;
1318+return jstr::parser::token::ASSIGNSHIFTRIGHT ;
13161319 YY_BREAK
13171320 case 61:
13181321 YY_RULE_SETUP
1319-#line 189 "lex.l"
1320-return jstr::parser::token::AND ;
1322+#line 190 "lex.l"
1323+return jstr::parser::token::OR ;
13211324 YY_BREAK
13221325 case 62:
13231326 YY_RULE_SETUP
1324-#line 190 "lex.l"
1325-return jstr::parser::token::EQUALITY ;
1327+#line 191 "lex.l"
1328+return jstr::parser::token::AND ;
13261329 YY_BREAK
13271330 case 63:
13281331 YY_RULE_SETUP
1329-#line 191 "lex.l"
1330-return jstr::parser::token::NOTEQUALITY ;
1332+#line 192 "lex.l"
1333+return jstr::parser::token::EQUALITY ;
13311334 YY_BREAK
13321335 case 64:
13331336 YY_RULE_SETUP
1334-#line 192 "lex.l"
1335-return jstr::parser::token::RATIONALLEFT ;
1337+#line 193 "lex.l"
1338+return jstr::parser::token::NOTEQUALITY ;
13361339 YY_BREAK
13371340 case 65:
13381341 YY_RULE_SETUP
1339-#line 193 "lex.l"
1340-return jstr::parser::token::RATIONALRIGHT ;
1342+#line 194 "lex.l"
1343+return jstr::parser::token::RATIONALLEFT ;
13411344 YY_BREAK
13421345 case 66:
13431346 YY_RULE_SETUP
1344-#line 194 "lex.l"
1345-return jstr::parser::token::RATIONALLEFTEQUAL ;
1347+#line 195 "lex.l"
1348+return jstr::parser::token::RATIONALRIGHT ;
13461349 YY_BREAK
13471350 case 67:
13481351 YY_RULE_SETUP
1349-#line 195 "lex.l"
1350-return jstr::parser::token::RATIONALRIGHTEQUAL ;
1352+#line 196 "lex.l"
1353+return jstr::parser::token::RATIONALLEFTEQUAL ;
13511354 YY_BREAK
13521355 case 68:
13531356 YY_RULE_SETUP
1354-#line 196 "lex.l"
1355-return jstr::parser::token::SHIFTLEFT ;
1357+#line 197 "lex.l"
1358+return jstr::parser::token::RATIONALRIGHTEQUAL ;
13561359 YY_BREAK
13571360 case 69:
13581361 YY_RULE_SETUP
1359-#line 197 "lex.l"
1360-return jstr::parser::token::SHIFTRIGHT ;
1362+#line 198 "lex.l"
1363+return jstr::parser::token::SHIFTLEFT ;
13611364 YY_BREAK
13621365 case 70:
13631366 YY_RULE_SETUP
13641367 #line 199 "lex.l"
1365-return jstr::parser::token::ADD ;
1368+return jstr::parser::token::SHIFTRIGHT ;
13661369 YY_BREAK
13671370 case 71:
13681371 YY_RULE_SETUP
1369-#line 200 "lex.l"
1370-return jstr::parser::token::SUB ;
1372+#line 201 "lex.l"
1373+return jstr::parser::token::ADD ;
13711374 YY_BREAK
13721375 case 72:
13731376 YY_RULE_SETUP
1374-#line 201 "lex.l"
1375-return jstr::parser::token::MUL ;
1377+#line 202 "lex.l"
1378+return jstr::parser::token::SUB ;
13761379 YY_BREAK
13771380 case 73:
13781381 YY_RULE_SETUP
1379-#line 202 "lex.l"
1380-return jstr::parser::token::DIV ;
1382+#line 203 "lex.l"
1383+return jstr::parser::token::MUL ;
13811384 YY_BREAK
13821385 case 74:
13831386 YY_RULE_SETUP
1384-#line 203 "lex.l"
1385-return jstr::parser::token::REMAINDER ;
1387+#line 204 "lex.l"
1388+return jstr::parser::token::DIV ;
13861389 YY_BREAK
13871390 case 75:
13881391 YY_RULE_SETUP
1389-#line 204 "lex.l"
1390-return jstr::parser::token::NOT ;
1392+#line 205 "lex.l"
1393+return jstr::parser::token::REMAINDER ;
13911394 YY_BREAK
13921395 case 76:
13931396 YY_RULE_SETUP
1394-#line 205 "lex.l"
1395-return jstr::parser::token::UNARYPLUSPLUS ;
1397+#line 206 "lex.l"
1398+return jstr::parser::token::NOT ;
13961399 YY_BREAK
13971400 case 77:
13981401 YY_RULE_SETUP
1399-#line 206 "lex.l"
1400-return jstr::parser::token::UNARYMINUSMINUS ;
1402+#line 207 "lex.l"
1403+return jstr::parser::token::UNARYPLUSPLUS ;
14011404 YY_BREAK
14021405 case 78:
14031406 YY_RULE_SETUP
14041407 #line 208 "lex.l"
1405-return jstr::parser::token::DOT ;
1408+return jstr::parser::token::UNARYMINUSMINUS ;
14061409 YY_BREAK
14071410 case 79:
14081411 YY_RULE_SETUP
1409-#line 209 "lex.l"
1410-return jstr::parser::token::PARENBEGIN ;
1412+#line 210 "lex.l"
1413+return jstr::parser::token::DOT ;
14111414 YY_BREAK
14121415 case 80:
14131416 YY_RULE_SETUP
1414-#line 210 "lex.l"
1415-return jstr::parser::token::PARENEND ;
1417+#line 211 "lex.l"
1418+return jstr::parser::token::PARENBEGIN ;
14161419 YY_BREAK
14171420 case 81:
14181421 YY_RULE_SETUP
1419-#line 211 "lex.l"
1420-return jstr::parser::token::CONDITIONALQUESTION;
1422+#line 212 "lex.l"
1423+return jstr::parser::token::PARENEND ;
14211424 YY_BREAK
14221425 case 82:
14231426 YY_RULE_SETUP
1424-#line 212 "lex.l"
1425-return jstr::parser::token::EXPECT ;
1427+#line 213 "lex.l"
1428+return jstr::parser::token::CONDITIONALQUESTION;
14261429 YY_BREAK
14271430 case 83:
14281431 YY_RULE_SETUP
1429-#line 213 "lex.l"
1430-return jstr::parser::token::EXCEPT ;
1432+#line 214 "lex.l"
1433+return jstr::parser::token::EXPECT ;
14311434 YY_BREAK
14321435 case 84:
14331436 YY_RULE_SETUP
1434-#line 216 "lex.l"
1435-return jstr::parser::token::IDENTIFIER ;
1437+#line 215 "lex.l"
1438+return jstr::parser::token::EXCEPT ;
14361439 YY_BREAK
14371440 case 85:
14381441 YY_RULE_SETUP
1439-#line 217 "lex.l"
1440-return jstr::parser::token::UNSIGNEDINTEGER ;
1442+#line 218 "lex.l"
1443+return jstr::parser::token::IDENTIFIER ;
14411444 YY_BREAK
14421445 case 86:
14431446 YY_RULE_SETUP
1444-#line 218 "lex.l"
1445-return jstr::parser::token::UNSIGNEDNUMBER ;
1447+#line 219 "lex.l"
1448+return jstr::parser::token::UNSIGNEDINTEGER ;
14461449 YY_BREAK
14471450 case 87:
14481451 YY_RULE_SETUP
1449-#line 219 "lex.l"
1450-return jstr::parser::token::TEXT ;
1452+#line 220 "lex.l"
1453+return jstr::parser::token::UNSIGNEDNUMBER ;
14511454 YY_BREAK
14521455 case 88:
1453-/* rule 88 can match eol */
14541456 YY_RULE_SETUP
14551457 #line 221 "lex.l"
1456-return jstr::parser::token::COMMENT ;
1458+return jstr::parser::token::TEXT ;
14571459 YY_BREAK
14581460 case 89:
14591461 /* rule 89 can match eol */
14601462 YY_RULE_SETUP
1461-#line 222 "lex.l"
1462-return jstr::parser::token::NEWLINE ;
1463+#line 223 "lex.l"
1464+return jstr::parser::token::COMMENT ;
14631465 YY_BREAK
14641466 case 90:
1467+/* rule 90 can match eol */
14651468 YY_RULE_SETUP
1466-#line 223 "lex.l"
1467-return jstr::parser::token::INDENT ;
1469+#line 224 "lex.l"
1470+return jstr::parser::token::NEWLINE ;
14681471 YY_BREAK
14691472 case 91:
14701473 YY_RULE_SETUP
14711474 #line 225 "lex.l"
1475+return jstr::parser::token::INDENT ;
1476+ YY_BREAK
1477+case 92:
1478+YY_RULE_SETUP
1479+#line 227 "lex.l"
14721480 ECHO;
14731481 YY_BREAK
1474-#line 1474 "lex.yy.cc"
1482+#line 1482 "lex.yy.cc"
14751483 case YY_STATE_EOF(INITIAL):
14761484 yyterminate();
14771485
@@ -1912,7 +1920,7 @@ int yyFlexLexer::yy_get_next_buffer()
19121920 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
19131921 {
19141922 yy_current_state = (int) yy_def[yy_current_state];
1915- if ( yy_current_state >= 217 )
1923+ if ( yy_current_state >= 219 )
19161924 yy_c = yy_meta[yy_c];
19171925 }
19181926 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
@@ -1945,11 +1953,11 @@ int yyFlexLexer::yy_get_next_buffer()
19451953 while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
19461954 {
19471955 yy_current_state = (int) yy_def[yy_current_state];
1948- if ( yy_current_state >= 217 )
1956+ if ( yy_current_state >= 219 )
19491957 yy_c = yy_meta[yy_c];
19501958 }
19511959 yy_current_state = yy_nxt[yy_base[yy_current_state] + yy_c];
1952- yy_is_jam = (yy_current_state == 216);
1960+ yy_is_jam = (yy_current_state == 218);
19531961
19541962 return yy_is_jam ? 0 : yy_current_state;
19551963 }
@@ -2592,6 +2600,6 @@ void yyfree (void * ptr )
25922600
25932601 /* %ok-for-header */
25942602
2595-#line 225 "lex.l"
2603+#line 227 "lex.l"
25962604
25972605
--- a/test/classtest.j
+++ b/test/classtest.j
@@ -1,31 +1,46 @@
11 spec my_main < main:
22 obj o = new hoge();
33 obj oa = new hogehoge(i:12);
4- o.f();
4+ expect o.f();
55 delete o;
66
77 expect oa.f();
8- expect oa.f(i:15) = 15;
9- expect oa.f(
8+ expect oa.ff() = 12;
9+ expect oa.ff(i:15) = 15;
10+ expect oa.ff(
1011 i:12
1112 ) = 12;
1213 delete oa;
1314
1415 obj oh = new Hg();
15- expect oh.f() = 32;
16- expect oh.f(i:18) = 18;
17- expect oh.f(i:12) = 12;
16+ expect oh.f();
17+ expect oa.ff() = 0;
18+ expect oh.fff() = 35;
19+ expect oh.ff(i:18) = 18;
20+ expect oh.ff() = 18;
21+ expect oh.fff(i:12) = 12;
22+ expect oh.ff() = 18;
23+ expect oh.fff() = 12;
1824 expect oh.g(i:15) = 15;
19- expect oh.f(
20- i: 12,
21- j: 15
22- ) = 12;
23- obj ob = new Hh(i:12);
24- expect ob.f() = 12;
25+ expect oa.fg() = 12;
26+ expect oh.fff(
27+ i: 14,
28+ j: 21
29+ ) = 14;
30+ expect oh.fff() = 14;
31+ expect oa.g() = 15;
32+ expect oa.fg() = 21;
33+ expect oa.f();
34+ expect oh.ff() = 18;
35+ delete oh;
36+ obj ob = new Hh(i:15);
37+ expect ob.f();
38+ expect oh.ff() = 0;
2539 expect ob.g() = 35;
26-
27- expect ob.g(i:15) = 15;
28- expect ob.f() = 12;
40+ expect oh.fff() = 12;
41+ expect oh.ffff() = 15;
42+ expect ob.g(i:17) = 17;
43+ expect ob.g() = 17;
2944 delete ob;
3045 ;
3146
@@ -39,19 +54,19 @@ class hoge:
3954
4055 class hogehoge:
4156 i32 i = 0;
42- io i32 f:
57+ io i32 ff:
4358 return i;
4459 ;
4560
4661 class Hg < hogehoge < hoge:
4762 i32 i = 35;
4863 i64 j = 12;
49- io i32 f:
64+ io i32 fff:
5065 return i;
5166 io i32 g:
5267 return i;
5368 io i64 fg:
54- return i;
69+ return j;
5570 ;
5671
5772 class Hf:
@@ -59,6 +74,6 @@ class Hf:
5974
6075 class Hh < Hg < Hf:
6176 i32 i = 0;
62- io i32 f:
77+ io i32 ffff:
6378 return i;
6479 ;
--- a/test/excepttest.j
+++ b/test/excepttest.j
@@ -3,6 +3,9 @@ spec my_main < main:
33 o.f();
44 except o.g();
55 delete o;
6+ obj oo = new hogehoge();
7+ except oo.f();
8+ delete oo;
69 ;
710
811
--- a/test/statementtest.j
+++ b/test/statementtest.j
@@ -10,7 +10,7 @@ spec my_main < main:
1010 return my_main;
1111 if oa.f() > 11:
1212 ;
13- else if oa.f() < 12:
13+ elif oa.f() < 12:
1414 delete oa;
1515 return my_main;
1616 else: