割り当て全体のみを気にするいくつかの割り当てを解析したい。課題の内容についてではありません。割り当ては で示され':='
ます。(編集:課題の前後に他のことが来るかもしれません)
いくつかの例:
a := TRUE & FALSE;
c := a ? 3 : 5;
b := case
a : 1;
!a : 0;
esac;
現在、私は「ケース」を含む課題と他の課題を区別しています。単純な割り当てについては、次のようなものを試しまし~('case' | 'esac' | ';')
たが、antlr は一致しないトークンについて不平を言いました ( など'='
)。
assignment :
NAME ':='! expression ;
expression :
( simple_expression | case_expression) ;
simple_expression :
((OPERATOR | NAME) & ~('case' | 'esac'))+ ';'! ;
case_expression :
'case' .+ 'esac' ';'! ;
Eclipse インタープリター((OPERATOR | NAME) & ~('case' | 'esac'))+ ';'! ;
が'and'
.
(~(OPERATOR | ~NAME | ('case' | 'esac')) |
~(~OPERATOR | NAME | ('case' | 'esac')) |
~(~OPERATOR | ~NAME | ('case' | 'esac'))) ';'!
しかし、これはうまくいきません。私は得る
"error(139): /AntlrTutorial/src/foo/NusmvInput.g:78:5: セット補数が空です |---> ~(~OPERATOR | ~NAME | ('case' | 'esac'))) EOC ! ;」
どうすれば解析できますか?