意義

2017-02-11 1 views
3

私は文法ファイルを理解しようとしています: https://github.com/antlr/grammars-v4/blob/master/url/url.g4意義

STRING 
    : ([a-zA-Z~] |HEX) ([a-zA-Z0-9.-] | HEX)* 
    ; 
HEX 
    : ('%' [a-fA-F0-9] [a-fA-F0-9])+ 
    ; 

を、私は最終的にに設定された文字を~オペレータを理解することはできませんよ:[a-zA-Z~] 私は https://github.com/antlr/antlr4/blob/master/doc/lexer-rules.md ~xすなわちマッチがないx によって記述セット内の任意の単一文字である。しかし、それは、PAのように末尾に来るときどのように解釈するか:あたりとして集合演算子ではないため~スタンドが、ことを知っています上記のSTRINGのためのトーン?

答えて

3

Antlrの専門家ではありませんが、それはURLに表示される可能性があるため、リテラルチルダ文字(~)と見なされます。これは例えばユーザーのホームディレクトリへのURLを指定するために使用されますが、少なくともインターネット上では、今日はあまり一般的ではありません。

プロダクションルールを見ると、たとえばホスト名としてタイルを張ると、ユーザーの自宅を基準にしたURLが指定されます。

+0

クイックリバートありがとう。フォローアップの質問: "〜"は演算子ではないので、エスケープ文字 "\"は通常 "〜"の前に置かれるべきではありません。 –

+0

私はそうは思わない。 '^'が否定を行う正規表現の文字クラスを見てください: '' =〜/ [^ a] /#=> nil'(否定) ''^'=〜/ [a ^] /#= > 0 '('^'はクラスの一部として通常の文字として扱われます)。 –