2012-01-11 12 views
0

に「再帰的」識別子を使用するルールの試合をしようと、私はこの行を持っている:私はフレックスで、この行を解析する必要がフレックス

0, 6 -> W(1) L(#); 

または

\# -> @shift_right R W(1) L 

、すべて取ります要素を矢印の各部分から削除し、リストに入れます。私は単純なものにマッチする方法を知っていますが、同じルールで複数のものをマッチングさせる方法はわかりません。私はルールの制限を増やすことはできません。私はヒントを持っています:断片を解析し、断片が結合し、状態を使用することはできますが、その方法はわかりませんし、ネット上で例を見つけることができません。誰か助けてくれますか?

そこで、ここでは例:

{

- > W(B)#invert_loop。

b - > W(a)#invert_loop;

- > L(#)

は}

このセクションでは、私はの左側にあるものを置く各ラインの構造、作成する必要が始まる - をベクターに>ものですいくつかのパラメータ、リストの右側にあります。それぞれの用語はまったく別の構造です。右側のものはルールを書いた:

W([a-zA-Z0-9。#])for W(anything)。

私はこれらの行を解析する必要があるので、パラメータと構造体を大きな構造体に入れることができます。 (最初の行のために)このような何か:PARAM = Aと

新しいbigStrucと構造体のリスト= W(何でも)、#invert

(それは別の構造体への参照のための表記法です)だから何私はこれらの行を解析して、これらのbigStructを作成して作成し、単純な構造のルールにも使用できるようにする方法を知ることが必要です(これらの構造に必要なものはすべて持っていますが、これらのメソッドを使用できます)。

私の英語は申し訳ありませんが、今回は願っています。

直前の編集:私はルールに行全体にマッチし、その後はstrtokでそれに取り組んでいます。以前のルールを使用して、どのタイプの構造を作成する必要があるかを確認する方法があります。私は滞在したくない場合、writex W([a-zA-Z0-9。#])を使用して、そのような構造を作成しなければならないことを知っていることを意味します。

// these are exclusive rules, so they do not overlap, for inclusive rules, use %s 
%x dataStructure 
%x addRules 
%% 
<dataStructure>-> { BEGIN addRules; } 
\{    { BEGIN dataStructure; } 
<addRules>;  { BEGIN dataStructure; } 
<dataStructure>\} { BEGIN INITIAL; } 

<dataStructure>[^,]+ { ECHO; } //this will output each comma separated token 
<dataStructure>. { } //ignore anything else 
<dataStructure>\n { } //ignore anything else 
<addRules>[^ ]+ { ECHO; } //this will output each space separated rule 
<addRules>. { } //ignore anything else 
<addRules>\n { } //ignore anything else 
%% 

私はそれはあなたが望むそれ何全くわからない:

+2

ようこそStackOverflow。これらのサイトで「おかげさまで」と言われる方法は、あなたの質問(良い回答と他の人から提供された良い質問)に有益な回答をアップし、あなたの質問に対する答えの1つを「同意する」ことです最も役立つ。(あなたがもう少し評判を上げるまでは、それほど多くの投票をすることはできませんが、あなたの質問に対する答えを受け入れることができます。そうすることで、評判も少し向上します)。[FAQ] ://stackoverflow.com/faq)、特に[ここで質問するにはどうすればいいですか?](http://stackoverflow.com/faq#howtoask) –

+2

Flexでリスト全体を処理する必要があるのはなぜですか?文法はリストを処理するのに適しています。スキャナはそうではありません。 Flexでそれを行う必要がある場合は、トークン化ルールは何ですか? 「言葉は空白で区切られていますか?あるいは、 '@ shift_right'トークンと' W(1) 'トークンが4つありますか? –

+0

どのように要素を定義していますか?スペース、句読点、特殊文字?リストはネイティブのCデータ構造ではないので、ライブラリを使用しているか、配列に項目を入れていますか?リスト内の実際のトークン、またはそれを表すトークンが必要ですか? –

答えて

0

[OK]を、このスニペットがあなたのためにどのように動作するかを確認することができます。オリジナルの投稿を編集して、コメントの内容と例を含めるようにして、英語の構造を改善してください。あなたが自分と矛盾することなくあなたが望むものを説明できないなら、私はあなたを助けることができません。