bison

    0

    1答えて

    現時点では、flex & bisonに基づいて簡単なプログラミング言語を開発しています。 私はまず、抽象構文木(AST)を構築し、その評価を続けます。評価の間、ユーザー入力を受信することが可能でなければならない。ユーザの入力はQt-GUIで行われます。 ast-evaluation-procedureは、GUIによって作成されるスレッド・ワーカ・オブジェクトで実行されます。 私の問題:実行中のフレ

    1

    1答えて

    Bisonには、mfcalcを拡張し、FLEXで外部でyylex()のような関数を実装する次のコードがあります。 私の問題を理解するために、重要なルールは、文法の冒頭でlineと呼ばれる非終端トークンにあります。 EOFが検出された場合、具体的に、ルールEVAL CLOSED_STRING '\n'とENDが(このトークンはFLEXによって送信される。最初は、そのファイルにファイルやポイント入力を

    0

    1答えて

    私はフレックスとバイソンを学びますが、私のフレックス/バイソン電卓は間違った結果をプリントします。例 $ ./fb1-5 1 + 2 + 3 = 32728 問題で何ができるかのMakefile fb1-5: fb1-5.l fb1-5.y bison -d fb1-5.y flex fb1-5.l cc -o [email protected] fb1-5.

    0

    1答えて

    私はC++パーサーを生成するためにlalr1.cc骨子のBisonを使用しており、api.value.type variantを生成しています。私は中間的なアクションを使用してさらなるセマンティックアクションで使用される値を返そうとしましたが、スタックの値がゼロになるようです。以下は例です。 parser.y: %require "3.0" %skeleton "lalr1.cc" %defi

    0

    1答えて

    私はMakefileをCMakeLists.txtに翻訳しようとしています。 fb1-5: fb1-5.l fb1-5.y bison -d fb1-5.y flex fb1-5.l cc -o [email protected] fb1-5.tab.c lex.yy.c -lfl CMakeLists.txtの試み cmake_minimum_required(

    0

    1答えて

    私の元の.yファイルは、ある程度のシフト/リダクションと削減/削減の競合を引き起こします。 そこで、これらの競合を解消するためにいくつかのルールを変更しました。そして私は新しいバージョンと古いバージョンとの間の等価性を手動で検証することができます。 しかし、私は新しいバージョンが自動的に元のバージョンと同等であることを検証したいですか?どうやって?

    0

    1答えて

    このBisonプログラムに問題があります。再利用がうまくいかない理由はわかりません。負の数での演算については、最初の数値を取得するために同じ行を使用し、より多くの演算で操作します。私はちょうど最初の数を負に変更しました。 calc.y %{ #include <stdio.h> #include <stdlib.h> extern int yylex(); extern int yyp

    0

    1答えて

    これは学校の割り当てのためのものです。私はちょうど正しい方向にポイントを探しています。たぶん、私はそれを見て答えを認識していないだけです(グーグル)。 文法を解析してすぐに{action}を実行する代わりに、後で実行するためにすべてをデータ構造にプッシュしたいと思います。たとえば、IF-cond-stmt-ELSE-stmtは、正常に解析されると、両方のstmtが実行されます。私はどこかに置くこと

    0

    1答えて

    私はバイソンとフレックスに経験が豊富で、何か助けが必要です。 私の.yファイルにいくつかのエラーがあります。 賢明な構文の罰金と私は それを「バイソンは、-d」が、私はgccでコンパイルしようとすると、それは私に(ここでは合計noobのを)解決する方法がわからないイムいくつかのエラーを与えるときには、コンパイルされます。 https://i.stack.imgur.com/fUeR7.png .l