今、プログラム言語みたいなものを作っているのですが、
読み込んだあとの、計算のやり方がわかりません。
type looseな言語を作っているので
型は気にしない計算をやりたいと思っています。
何かいい方法がございましたら教えてください。
逆ポーランド計算
型を宣言しない場合は、内部の型がLong型なのかDouble型なのかをはっきりさせて作る方がいいと思います。
Double型の方がいろいろな意味で汎用性がありますが。
ファイルから1単語読み込んで読み込んだ内容をString型で返す関数をLoad()関数として、
のようにやったらいいのではないかと。
エラーコードとか随分省略して書きましたが、参考になれば幸いです。
追伸
もちろんこのままじゃコンパイルできませんよ?
Defined関数、SetNewDouble関数、SetNewDoubleName関数、GetNowDouble関数、Load関数等は各自で工夫して作ってみてください。
Double型の方がいろいろな意味で汎用性がありますが。
ファイルから1単語読み込んで読み込んだ内容をString型で返す関数をLoad()関数として、
コード: 全て選択
Function Main()
Dim A$ As String
Dim B$ As String
Dim C$ As String
Dim D$ As String
Dim ax As Double
A$=Load()
If Defined(A$)=1 then
B$=Load()
If B$="=" then
B$=Load()
C$=Load()'計算記号
D$=Load()
If Defined(B$)=1 And Defined(D$)=1 then
If C$="+" then
ax=GetNowDouble(B$)+GetNowDouble(D$)
ElseIf C$="-" then
ax=GetNowDouble(B$)-GetNowDouble(D$)
ElseIf C$="*" then
ax=GetNowDouble(B$)*GetNowDouble(D$)
ElseIf C$="/" then
ax=GetNowDouble(B$)/GetNowDouble(D$)
EndIf
SetNewDouble(A$,ax)
ElseIf Defined(B$)=1 And D$=Str$(Val(D$)) then
'略
'略
EndIf
EndIf
ElseIf A$="Print" then
B$=Load()
If Defined(B$)=1 then
ax=GetNowDouble(B$)
ElseIf B$=Str$(Val(B$)) then
ax=Val(B$)
EndIf
Print ax
ElseIf A$="Dim" then
B$=Load()
If Defined(B$)=0 then
SetNewDoubleName(B$)
EndIf
EndIf
EndFunction
Do
Main()
If Eof(1) then Exit Do
Loop
エラーコードとか随分省略して書きましたが、参考になれば幸いです。
追伸
もちろんこのままじゃコンパイルできませんよ?
Defined関数、SetNewDouble関数、SetNewDoubleName関数、GetNowDouble関数、Load関数等は各自で工夫して作ってみてください。
Website→http://web1.nazca.co.jp/himajinn13sei/top.html
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
ここ以外の場所では「暇人13世」というHNを主として使用。
に署名を書き換えて欲しいと言われたので暇だしやってみるテスト。
返信
返信遅れてすみません。
> 型を宣言しない場合は、内部の型がLong型なのかDouble型なのかをはっきりさせて作る方がいいと思います。
そうですよね、、、ばらばらですとエラーが出ますし、、、
> ファイルから1単語読み込んで読み込んだ内容をString型で返す関数をLoad()関数として、
> 追伸
> もちろんこのままじゃコンパイルできませんよ?
> Defined関数、SetNewDouble関数、SetNewDoubleName関数、GetNowDouble関数、Load関数等は各自で工夫して作ってみてください。
このようなすばらしいスクリプトをありがとうございます。
> 型を宣言しない場合は、内部の型がLong型なのかDouble型なのかをはっきりさせて作る方がいいと思います。
そうですよね、、、ばらばらですとエラーが出ますし、、、
> ファイルから1単語読み込んで読み込んだ内容をString型で返す関数をLoad()関数として、
> 追伸
> もちろんこのままじゃコンパイルできませんよ?
> Defined関数、SetNewDouble関数、SetNewDoubleName関数、GetNowDouble関数、Load関数等は各自で工夫して作ってみてください。
このようなすばらしいスクリプトをありがとうございます。