2016-05-30 14 views
0

Excelの式のためのレクサーとパーサーを作成しています。レクサーの優先順位

Excelでは、セルに名前を割り当てることができます。たとえば、abcは有効な名前ですが、セルとの混同を避けるためにセル名をB2とすることは禁止されています。 B2したがって、式=B2を満たした後は、B2がユーザー定義の名前ではなくセルを参照していると確信しています。私lexer_formula.mll、私が定義した識別子で

let lex_cell = ['A' - 'Z']+ ['0' - '9']+ (* regular expressions to include all the cells *) 
let lex_name = ['A' - 'Z' '0' - '9']+ (* regular expressions to include all the names *) 

しかし、試合でB2のような文字列が両方lex_celllex_nameは、誰もが私が最初lex_celllex_name検討するレクサーを言うことができる方法を知っていますか? をlex_nameの前に入れれば十分でしょうかrule token = parse

+0

あなたは実際にocamllexを使用していますか?あなたはたくさんのタグを持っていますが、どのスキャナジェネレータを使用しているかはあなたが言うことはありません。 – rici

+0

はい、私は 'ocamllex'を使用しています。 – SoftTimur

答えて

0

ocamllex manualによると、それは置くために十分ですlex_cell最初:

いくつかの正規表現を入力し、「最長一致」のルールが適用されるのプレフィックスと一致する場合は、次の最長プレフィックスに一致する正規表現を入力が選択されます。タイの場合、規則の前に出現する正規表現が選択されます。

関連する問題