現在、1つの言語を解釈して結果を出力するクラスプロジェクトを作成中です。私は、各行があるJavascript switch文が分割文字列で失敗する
ファイルを読み込み、文字列の配列(別名各ライン)を取得するために改行で文書を分割
は、その後、さらににsubdivded、オペレータ、時にはパラメータです。私が持っている問題は、パラメータを持たない演算子にあります。私は私が午前大きな問題があることであるオペレータを読み、
call(){
switch(opp)
{
case "lvalue":lvalue(param); break;
case "rvalue":rvalue(param); break;
case ":=": set(); break;
}
}
を呼び出すように機能するかを判断するためにswitchステートメントを使用し
lvalue x //this declares a variable x
rvalue 5 //places the value 5 on the stack
:= //assign the value 5 to the variable x
:
言語の例は次のようになりますswitch文によって ":="の入力が完全にスキップされています。
oppとparamの入力で、各行をスペースで区切って作成しました。 :=は行に他の値を持たないので、分割の結果は単なる1つの項目に過ぎません。私はそれが私の問題がどこから来ているのだろうと思う。
私はこのような私のswitch文に呼び出す:
var args=doc[i].split(' ');
var opp=args[0];
var param=args.splice(1,args.length).join(" ");
call(opp,param);
私は後にスペースを置いたときに気づい:=入力ファイルで、switch文は、それを読み込みます。だから私はこれが正しく文字列を解析する問題だと確信しています。この問題は、パラメータを持たない他の演算子(問題を解決するスペースもあります)でも発生します。
入力にスペースがあるとは限りません。スイッチのステートメントがオペレータを認識できるようにする必要があります。
おかげ
どのアレイが表示されますか、どのように表示されますか?別のマッチャーとの「トリム」や「スプリット」が役立つかもしれません。 –
":="を使って私の行を分割すると、[":="]という配列が得られます。文字列にスペースや奇形がないように見えます。 –
しかし、空白を追加する前に16進エディタを見ると、 ":="は改行の直後に改行があります。 –