Question

Je suis assez nouveau pour JFlex et JSyntaxPane bien que je suis parvenu à pirater un ensemble lexer XPath.

Le problème que je me trouve dans est que je travaille sur un projet qui prend en charge un sous-ensemble de XPath avec quelques fonctionnalités exclusives. Nasty Je sais.

Si cela était un problème Java régulier je retourne à l'héritage, mais il ne semble pas possible d'obtenir l'héritage en ayant un lexer étendre un généré précédemment.

par exemple

import jsyntaxpane.Token;
import jsyntaxpane.TokenType;

%% 

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

Cela semble provoquer une charge d'erreurs me disant que je ne peux pas étendre certaines méthodes finales. Est-ce un problème spécifique à la DefaultJFlexLexer dans JSyntaxpane ou que je fais tout ce mal? Quelqu'un at-il été dans une situation similaire et a trouvé un moyen de parvenir à une sorte d'héritage ad hoc dans un tas de lexers?

Était-ce utile?

La solution

JFlex génère plusieurs méthodes finales, donc les erreurs. Je peux penser à deux solutions de contournement possibles:

  1. Copiez simplement les règles de XPathLexer en ProprietaryLexer et les étendre au besoin.
  2. (dangereux) Modifier le fichier squelette de ne pas avoir des méthodes finales, procéder comme vous faisiez. Je ne l'ai jamais essayé cela, donc je ne peux pas garantir que ce sera même compilation.

Il serait certainement bien si JFlex avait une commande %inherit, cependant.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top