0

XPathのレクサーを一緒にハックすることができましたが、私はJFlexとJSyntaxPaneにかなり慣れていません。

私が直面している問題は、いくつかの独自機能を備えたXPathのサブセットをサポートするプロジェクトに取り組んでいることです。厄介な私は知っています。

これが通常のJavaの問題である場合、継承に目を向けますが、1つのレクサーで以前に生成されたレクサーを拡張することによって継承を実現することはできないようです。

例えば

import jsyntaxpane.Token;
import jsyntaxpane.TokenType;

%% 

%public
%class ProprietaryLexer
%extends XPathLexer
%unicode
%char
%type Token

これにより、いくつかのfinalメソッドを拡張できないというエラーが大量に発生するようです。これはJSyntaxpaneのDefaultJFlexLexerに固有の問題ですか、それとも間違っているだけですか?誰かが同様の状況にあり、多数のレクサーである種のアドホック継承を実現する方法を見つけたことがありますか?

4

1 に答える 1

2

JFlex はいくつかの最終メソッドを生成するため、エラーが発生します。考えられる回避策は 2 つあります。

  1. からルールをコピーしXPathLexerProprietaryLexer、必要に応じて拡張するだけです。
  2. (危険) final メソッドを持たないようにスケルトン ファイルを変更してから、以前と同じように続行します。私はこれを試みたことがないので、コンパイルさえ保証できません。

とはいえ、JFlex に%inheritコマンドがあればいいのですが。

于 2009-02-16T16:39:04.383 に答える