Domanda

Sono abbastanza nuovo per JFlex e JSyntaxPane anche se sono riuscito a incidere insieme un lexer per XPath .

Il problema mi ritrovo è che sto lavorando su un progetto che supporta un sottoinsieme di XPath con alcune caratteristiche proprietarie. Nasty Lo so.

Se questo fosse un problema regolare Java Mi piacerebbe girare di eredità, ma non sembra possibile raggiungere eredità da avere una lexer estendere un generato in precedenza uno.

es

import jsyntaxpane.Token;
import jsyntaxpane.TokenType;

%% 

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

Questo sembra causare un carico di errori che mi dice che non posso estendere alcuni metodi finali. È questo un problema specifico alla DefaultJFlexLexer in JSyntaxpane o sto solo facendo male? Qualcuno è stato in una situazione simile e ha trovato un modo per ottenere una sorta di eredità ad hoc in un mazzo di lexer?

È stato utile?

Soluzione

JFlex genera diversi metodi finali, quindi gli errori. Mi vengono in mente due possibili soluzioni:

  1. Basta copiare le regole da XPathLexer in ProprietaryLexer ed estenderli, se necessario.
  2. (pericoloso) Modificare il file scheletro di non avere metodi finali, quindi procedere come stavi facendo. Non ho mai tentato questo, quindi non posso garantire che sarà anche compilare.

Certamente sarebbe bello se JFlex avuto un comando %inherit, però.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top