Pergunta

Estou desenvolvendo um tradutor simples do MathML para o LATEX, usando o Lex e o YACC. No meu arquivo lex contendo as regras regex, tenho uma definida para operadores aritméticos [-+*=/]. Quero se estender para que ele reconheça mais-minúsculo (+-) e tempos invisíveis ('& Invisibletimes'), mas não estou familiarizado com Regex e preciso de ajuda.

Foi útil?

Solução

Experimente isso:

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

Observe que você precisa escapar do + dentro +- Porque é um operador fora das classes de personagens. Você pode fazer isso com barragem (como já fiz aqui) ou com cotações duplas. (A sintaxe de duas quadras é bastante incomum-a maioria das outras implementações da Regex usa apenas barrajash para escapar, então eu estaria inclinado a usar barras de barragem, pois torna a Regex mais "convencional".)

Outras dicas

Algo assim funcionaria?

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

Não estou muito familiarizado com o MathML, então tenho o problema oposto de você. Como outros disseram, você pode fazer tudo isso em um regex, assim:

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

No entanto, se você deseja ter ações diferentes associadas a cada uma delas, precisa fazer assim:

[-+*=/]            {/* action 1 here */}
\+-                {/* action 2 here */}
&InvisibleTimes    {/* action 3 here */}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top