2009-05-24 8 views
0

LexとYaccを使用して、MathMLからLatexへの単純なトランスレータを開発しています。正規表現ルールを含む私のlexファイルには、算術演算子[ - + * = /]のために定義されたものがあります。プラスマイナス(+ - )と見えない時間( '& InvisibleTimes')を認識するように拡張したいが、私は正規表現になじみがなく、助けが必要だ。レックス用正規表現

答えて

1

これを試してください:あなたは、それは、オペレータが文字クラスの外だから+-+をエスケープする必要が

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

注意を。これはバックスラッシュ(ここでやったように)や二重引用符で行うことができます。 (二重引用構文はかなり珍しいです - 他のほとんどの正規表現の実装ではエスケープにバックスラッシュしか使わないので、バックスラッシュを使うと正規表現をより「従来のもの」にする傾向があります)。

2

この作品のようですか?

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

私はあまりよくありませんMathMLに精通しているので、私はあなたの反対の問題を抱えています。他の人が言ったように、あなたはこのように、すべて1つの正規表現でこれを行うことができます。

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

をしかし、あなたはこれらのそれぞれに関連するさまざまなアクションを持っているしたい場合は、このようにそれを実行する必要があります。

 
[-+*=/]   {/* action 1 here */} 
\+-    {/* action 2 here */} 
&InvisibleTimes {/* action 3 here */}