質問

私はこれは私が思い付くことができる最高で0〜255の小数を受け入れるようにしたいです

fragment my_token :
  ('0'..'9') |                    // 0 -> 9
  ('1'..'9' '0'..'9') |           // 0 -> 99
  ('1' '0'..'9' '0'..'9')  |      // 100 -> 199
  ('2' '0'..'4' '0'..'9') |       // 200 -> 249
  ('25' '0'..'5');                // 250 -> 255

私はちょうど無知N00Bています。 Surelryより良い方法があるのですか?

役に立ちましたか?

解決

あなたはレクサーをリラックスして、後で時間にチェックを延期する場合は、

あなたはより良い結果を持っています。あなたがそれを変換するときに値が範囲外の場合レックスNUMBERは、その後、あなたは非常に特定のエラーメッセージを提供することができます。あなたはレクサーは厳格にし、誰かが256に入った場合は、結果エラーメッセージが前に文法を行っていない人には判読できないです。

NUMBER
    :    '0'..'9'+
    ;

他のヒント

私は280Z28の答えをup'ed - が提案されたものを行います。しかし、あなたはパターンを書き込むための別の方法をしたい場合は、試すことができます:

0|1([0-9][0-9]?)?|2([0-4][0-9]?|5[0-5]?)?|[3-9][0-9]?

これは、何よりも私が披露以上です。それはあなたのコードで使用すべきものではない検証するのは難しいのです(私はこれを書いた最初の時間は、私はそれをテストするまでキャッチされていなかったミスを犯した)、およびます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top