yacc

    0

    2答えて

    私はYaccプログラミングを始める前に、入力テキストファイル に正しくペアのかっこのシーケンスが含まれているかどうかをチェックするプログラムを書くのは簡単な作業です。誤ったシーケンス は、「構文エラー!」として通知されます。私はバイソンとフレックスを使用します。 例正しいデータ: (()()((())())()) が、 (() が正しくありません 私の問題は、私はそれが動作するはずだと思うことです

    0

    2答えて

    私はLex/Yaccを初めて使用しています。 constant : I_CONSTANT { printf("I_CONSTANT %d\n", $1); } | F_CONSTANT | ENUMERATION_CONSTANT /* after it has been defined as such */ ; 問題は、私はアクションを入れていない問題

    0

    1答えて

    を読んで、私は私のパーサによって読み込まれるファイルがあります。 BEGINING. XXX XY-1. XXXX Y. XXXX Z. BODY. PRINT "Please enter a number?". END. test.txtのエラーがPRINTトークンを中心に発生しているが。私の字句解析ツールでは、文字列"Please enter a number?"が

    0

    1答えて

    私は本からyaccの簡単な例を書こうとしていますが、コンパイル中にエラーが発生しています。 は、ここに私のexample.lです: %{ #include "y.tab.h" %} %% a return(A); b return (B); . return(yytext[0]); \n return('\n'); %% int yywrap() {return 1;} 、

    1

    2答えて

    この文法は、演算子の優先順位を指定していても競合しています。ドラゴンの本でさえ、そのような方法で解決されました(最初の7行で実装された方法)が、まだ矛盾します!以下 はYACCで実装コードです %right THEN_KW %right ELSE_KW %left XOR_KW OR_KW %right '=' %left AND_KW ALSO_KW %left EQ_KW LT_KW

    0

    1答えて

    私はflexとbisonを使用して架空のプログラミング言語用のパーサを作成しています。有効で無効な変数名が存在します。 XXXX XY-1 // valid XXXXX Z // valid XXX Y // valid XXX 5Aet // invalid XXXX XXAB-Y // invalid 最初のxは、変数のサイズを指定するだけです。変数5Aetは数字で始まるので、は無

    0

    1答えて

    "boolean x;"という式をチェックしようとしていますが、私は "構文エラー"を取得していると私はなぜ理解できません。 "x = 3;"という式をチェックしているときに、または "2 = 1;"の場合、抽象構文ツリーが生成され、エラーは表示されません。 %% [\n\t ]+; boolean {return BOOL;} TRUE {return TRUE;} FALSE {ret

    -1

    1答えて

    (shift vs reduce)と(reduce vs reduce)のときにLRパーサーの衝突を知りました。 (shift対reduce)競合が発生した場合は、shiftを実行します。 (reduce対reduce)競合が発生した場合、最初のプロダクションルールを実行します。 なぜですか?? シフトと第1のプロダクションルールを選択する理由

    1

    1答えて

    私はLexとYaccを使って小さなプロジェクトを開発しており、数学的表現を扱わなければなりません。私のファイルsyntax.yで 、私はプロダクションルールのこれらの2つのタイプがあります。 %union { char* lexeme; double value; } %token <lexeme> NUM %type <lexeme> expr %ty

    -1

    1答えて

    の致命的なエラー予期せぬ終了と型なしであるので、私は、このコード %{ #include <ctype.h> #include <stdlib.h> #include <stdio.h> #include <math.h> // Fonction qui permet de claculer la moyenne double moy(int*ls,int size) { int