• R/O
  • SSH
  • HTTPS

コミット

タグ
未設定

よく使われているワード(クリックで追加)

javaandroidc++linuxc#objective-ccocoa誰得qtrubybathyscaphegamephpguicwindows翻訳pythonomegattwitterframeworkbtronarduinovb.net計画中(planning stage)directxpreviewertestゲームエンジンdom

N88BASICが簡単に動くインタープリタを目指します。


コミットメタ情報

リビジョン26 (tree)
日時2018-10-02 07:33:28
作者bellyoshi

ログメッセージ

変更サマリ

差分

--- trunk/csmock/WindowsFormsApp1/getToken/compile.cs (revision 25)
+++ trunk/csmock/WindowsFormsApp1/getToken/compile.cs (revision 26)
@@ -59,6 +59,9 @@
5959 next();
6060 s_abn88_Print();
6161 break;
62+ case TokenType.ab_for:
63+ s_for();
64+ break;
6265 case TokenType.EndOfLine:
6366 next();
6467 break;
@@ -66,6 +69,58 @@
6669 }
6770 }
6871
72+ public void s_for()
73+ {
74+ string var_name;
75+ next();
76+ Console.Write("for(");
77+ if(nextToken.TokenType == TokenType.identifier)
78+ {
79+ //todo:変数表の処理は後回しとする。
80+ Console.Write("var ");
81+ var_name = nextToken.src_str;
82+ Console.Write(nextToken.src_str);
83+ }
84+ else
85+ {
86+ syntaxError() ;
87+ return;
88+ }
89+ next();
90+ if(nextToken.TokenType == TokenType.Equal)
91+ {
92+ Console.Write(" = ");
93+ }
94+ else
95+ {
96+ syntaxError();
97+ return;
98+ }
99+ next();
100+ expression();
101+ if(nextToken.TokenType == TokenType.ab_to)
102+ {
103+ next();
104+ }
105+ else
106+ {
107+ syntaxError();
108+ return;
109+ }
110+ Console.Write($";{var_name} <=");//todo step -1の処理
111+ expression();
112+ Console.Write($";{var_name}++)");
113+ Console.WriteLine("{");
114+ while (nextToken.TokenType != TokenType.ab_next)
115+ {
116+ statement();
117+ }
118+ Console.WriteLine("}");
119+ next();
120+
121+
122+ }
123+
69124 public void s_abn88_Line()
70125 {
71126 next();