0

だから私はパーサーを使用して生成しましたJISON

%lex
%x TEXT
%%

("Project"|"project") {return 'PROJECTCOMMAND';}
"-au" {return 'ADDUSER';}
"-n"  {this.begin('TEXT'); return 'NAMEOPTION';}
"-k" {return 'KEYOPTION';}
"-desc" {return 'DESCRIPTION';}
("--add"|"-a") {return 'ADDOPTION';}
<TEXT>[-a-zA-Z0-9@\.]+ {this.popState(); return 'TEXT';}
<INITIAL,TEXT>\s+ // Ignore white space...

/lex
%%
line    :   
       PROJECTCOMMAND ADDUSER 
            {
                //Project Command of add user
                var res = new Object();
                res.value = "addUser Project";
                return res;
            }      
    |   PROJECTCOMMAND ADDOPTION 
            {
                //Project Command with no arguments
                var res = new Object();
                res.value = "addProject";
                return res;
            }
    |   PROJECTCOMMAND ADDOPTION NAMEOPTION TEXT 
            {
                //Project command with project name as argument
                var res = new Object();
                res.value = "addProject name";
                res.name = $4;
                return res;

    }    

コマンドで検証を行う方法はありますか。つまり、コマンドが上記のルールのいずれも満たさない場合、エラーをスローします。つまり、デフォルト オプションがあります。
パーサーの最後に次のようなものがあります。

| return "command is invalid";

前もって感謝します

4

1 に答える 1