0

twenty five percentのような人間の言語表現を取り、それをのような数に変換できるパーサーを構築しようとしてい25%ます。

基本的に、私には次のようなルールがあります。

Number:
    (T1 | T2 | T3 T1) 'percent'?
;

terminal T1: 'zero' | 'one' | 'two' etc....;
terminal T2: 'ten' | 'eleven' | 'twelve' etc...;
terminal T3: 'twenty' | 'thirty' | 'forty' etc...;

Numberそして、Xtendにアクセスしてコードを生成するときに、テキストのようではなく数値になるように、なんらかの方法で変換したいと思いますtwenty five percent

これは可能ですか?

4

1 に答える 1

1

文字列を返すデータ型ルールとして数値を定義しました。

あなたがのようなものを使用する場合

Number returns ecore::EBigDecimal:
  (T1 | T2 | T3 T1) 'percent'?
;

ルールの値コンバーターを定義して、Numberそれをの実際のインスタンスに変換できますBigDecimal。ルール番号の呼び出し先は、それをとして表示しBigDecimalます。Xtextでの値変換の詳細については、ドキュメントを参照してください。そのためには、Ecoreパッケージをインポートする必要があることに注意してください。それについて質問がある場合は、一般的な端末とドキュメントを参照してください。

于 2012-11-08T17:22:18.367 に答える