Domanda

Sto sviluppando un semplice traduttore dal MathML al lattice, utilizzando Lex e Yacc. Nel mio file lex contenente le regole regex ho quello definito per gli operatori aritmetici [- + * = /]. Voglio esteso in modo che avrebbe riconosciuto più-meno (+ -) e tempi di invisibili ( '& InvisibleTimes'), ma sono familiarità con regex e ho bisogno di aiuto

.
È stato utile?

Soluzione

Prova questo:

([-+*=/]|\+-|&InvisibleTimes)

Si noti che è necessario per sfuggire alla + in +- perché è un operatore esterno di classi di caratteri. Si può fare questo con la barra rovesciata (come ho fatto qui) o con le doppie virgolette. (La sintassi doppia citazione è abbastanza inusuale -. Maggior parte delle altre implementazioni regex utilizzano solo backslash per sfuggire, quindi mi piacerebbe essere incline a utilizzare barre rovesciate in quanto rende l'espressione regolare più "convenzionale")

Altri suggerimenti

Sarebbe qualcosa di simile a questo lavoro?

(?:[-+*=/]|\+-|&InvisibleTimes)

Io non sono molto familiare con MathML, così ho il problema opposto di voi. Come altri hanno detto, è possibile fare tutto questo in una regex, in questo modo:

[-+*=/]|\+-|&InvisibleTimes

Tuttavia, se si desidera avere diverse azioni associate a ciascuno di questi, è necessario fare in questo modo:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top