• R/O
  • HTTP
  • SSH
  • HTTPS

コミット

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

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

自作言語nullptrのインタープリターです。


コミットメタ情報

リビジョンed684ba4bf71042a3c88f1a07ab15cce9d0d04fc (tree)
日時2015-08-08 16:35:37
作者Diverge <diverge.vosystems@gmai...>
コミッターDiverge

ログメッセージ

外部モジュールローダの実装開始

変更サマリ

差分

Binary files a/nullptr.sdf and b/nullptr.sdf differ
--- a/nullptr/ControlManager.cpp
+++ b/nullptr/ControlManager.cpp
@@ -148,23 +148,32 @@ std::vector<std::string> Nullptr::ProcBrackets(std::vector<std::string> lex)
148148 std::string Nullptr::CalcBracket(std::string inBracket)
149149 {
150150 vector<BasicTypes::Int> num;
151+ BasicTypes::Int intd;
152+
151153 bool minus=false;
154+ unsigned char operate=0;
155+ enum Operator{
156+ plus=1,
157+ minus=2,
158+ multiple=4,
159+ divide=8,
160+ mod=16,
161+ };
162+
152163 for(size_t C=0; C<inBracket.size(); C++){
153164 switch(inBracket[C]){
154- case '+':
155-
156- break;
157165 case '-':
158-
166+ minus=!minus;
167+ case '+':
159168 break;
160169 case '*':
161-
170+ operate=multiple;
162171 break;
163172 case '/':
164-
173+ operate=divide;
165174 break;
166175 case '%':
167-
176+ operate=mod;
168177 break;
169178
170179 default:
@@ -174,6 +183,17 @@ std::string Nullptr::CalcBracket(std::string inBracket)
174183 n[c-C]=inBracket[c];
175184 }
176185 num.push_back({!minus,stoull(n)});
186+ switch(operate){
187+ case multiple:
188+ num.push_back((*num.end())*(*(num.end()-1)));
189+ break;
190+ case divide:
191+ num.push_back((*(num.end()-1))/(*num.end()));
192+ break;
193+ case mod:
194+ num.push_back((*(num.end()-1))%(*num.end()));
195+ break;
196+ }
177197 break;
178198 }
179199 }
--- /dev/null
+++ b/nullptr/ModuleLoader.cpp
@@ -0,0 +1,40 @@
1+/*
2+nullptr interpreter
3+(C) 2015 VOSystems.
4+*/
5+
6+#include"nullptr.h"
7+#include"nullptrInterpreter.h"
8+
9+using namespace std;
10+using namespace VOSystemsNullptr;
11+
12+bool Nullptr::ModuleInfoLoader(std::string name)
13+{
14+ string src=m_src;
15+ string work=m_workline;
16+
17+ m_src=name+".nullptrmodule";
18+ do{
19+ LineLoad();
20+
21+ }while(!m_workline.empty());
22+
23+ m_src=src;
24+ m_workline=work;
25+}
26+
27+bool Nullptr::ModuleConnect(std::string name)
28+{
29+
30+}
31+
32+bool Nullptr::ModuleRun(std::string name)
33+{
34+
35+}
36+
37+bool Nullptr::ModuleDisConnect(std::string name)
38+{
39+
40+}
--- a/nullptr/nullptr.cpp
+++ b/nullptr/nullptr.cpp
@@ -119,6 +119,11 @@ ErrorNext:;
119119 m_src = "./NullptrTmp/Extracted.nullptr";
120120 }
121121
122+void Nullptr::Trim(void)
123+{
124+
125+}
126+
122127 void Nullptr::Work(void)
123128 {
124129 do{
--- a/nullptr/nullptr.h
+++ b/nullptr/nullptr.h
@@ -74,5 +74,23 @@ namespace VOSystemsNullptr
7474 }Identifier;
7575
7676 typedef std::vector<Identifier> IdentifierList;
77+
78+ enum ModuleMode{
79+ NotFound=0,
80+ ReturnBool=1,
81+ ReturnInt=2,
82+ ReturnString=4,
83+ };
84+
85+ struct ModuleFunction{
86+ std::string name;
87+ unsigned char mode;
88+ unsigned char ArguInt,ArguBool,ArguString;
89+ };
90+
91+ typedef struct _Module{
92+ std::string name;
93+ std::vector<struct ModuleFunction> modules;
94+ }Module;
7795 }
7896 }
\ No newline at end of file
--- a/nullptr/nullptr.vcxproj
+++ b/nullptr/nullptr.vcxproj
@@ -126,6 +126,7 @@
126126 <ClCompile Include="ControlManager.cpp" />
127127 <ClCompile Include="int.cpp" />
128128 <ClCompile Include="ManageVar.cpp" />
129+ <ClCompile Include="ModuleLoader.cpp" />
129130 <ClCompile Include="nullptr.cpp" />
130131 <ClCompile Include="open.cpp" />
131132 </ItemGroup>
--- a/nullptr/nullptr.vcxproj.filters
+++ b/nullptr/nullptr.vcxproj.filters
@@ -41,6 +41,9 @@
4141 <ClCompile Include="ControlManager.cpp">
4242 <Filter>ソース ファイル</Filter>
4343 </ClCompile>
44+ <ClCompile Include="ModuleLoader.cpp">
45+ <Filter>ソース ファイル</Filter>
46+ </ClCompile>
4447 </ItemGroup>
4548 <ItemGroup>
4649 <None Include="iostream.nullptrmodule" />
--- a/nullptr/nullptrInterpreter.h
+++ b/nullptr/nullptrInterpreter.h
@@ -28,6 +28,15 @@ namespace VOSystemsNullptr
2828
2929 void LineLoad(void);//行読み込み
3030 void Extract(void);//プリプロセッサー、展開
31+ void Trim(void);//プリプロセッサー、除去
32+
33+ bool ModuleInfoLoader(std::string name);
34+ bool ModuleConnect(std::string name);
35+ bool ModuleRun(std::string name);
36+ bool ModuleDisConnect(std::string name);
37+
38+ std::vector<System::Module> m_modules;
39+ System::Module m_CurrentConnectModule;
3140
3241 std::string m_stdout,m_stdin,m_stderr;//標準入出力系の名前
3342