だから、私はこのようなスイッチステートメントを含むコードを解析しようとしています
function (a : Boolean) equals (b : Boolean) : Boolean {
switch (a) {
case true:
switch (b) {
case true:
return (true);
case false:
return (false);
}
case false:
switch (b) {
case true:
return (false);
case false:
return (true);
}
}
};
と
switch
: "switch" expression "{" cases "}" {
Switch $2 $4
}
;
cases
: case cases {
($1 : $2)
}
| case {
[$1]
}
;
case
: "case" pattern ":" caseStatements {
Case $2 $4
}
;
caseStatements
: caseStatement ";" caseStatements {
($1 : $3)
}
| caseStatement {
[$1]
}
;
caseStatement
: assignment {
AssignmentCaseStatement $1
}
| return {
ReturnCaseStatement $1
}
| switch {
SwitchCaseStatement $1
}
;
しかし、私は取得し続けます:
certa: user error (../examples/Certa/BooleanLogic.certa:16: Parse error at token 'case')
生成されたパーサーを実行すると。ここで奇妙なのは、「case」キーワードの2 番目のインスタンスでは失敗するが、最初の では失敗しないことです。なぜそれが世界であるでしょうか?