yacc

    1熱度

    2回答

    嗨,我正在寫一個簡單的yacc程序,它需要一個程序代碼並計算它有多少個分配語句。 例如,對於下面的代碼片段: void main() { int a = 3; int bb = 10; } 我想我YACC打印出有2分分配的句子。由於我是初學者,因此我在網上找到了來自Oreily書籍的示例代碼並修改了代碼。 yacc.y %{ 2 #include <stdio.h>

    0熱度

    1回答

    %option case-insensitive %option noyywrap %option yylineno id [a-zA-Z][a-zA-Z_0-9]* integer (0[xX][0-9A-Fa-f]+)|([0-9]+) real [0-9]*\.[0-9](e|E)?[0-9]* undefined [^"\r\n \t] %x ST

    1熱度

    1回答

    我正在編寫一個簡單的Yacc程序,它接收程序代碼並返回int和double類型的變量和函數的計數。 我遇到了一個奇怪的問題,即當有一條匹配的規則時,程序返回一個語法錯誤,但是這條線拾起了一條不同的規則。我帶來了顯示了這個錯誤代碼的組成部分:(如果你看到未使用的變量,那是因爲我刪除了不相關的這種錯誤的其他部分) YACC代碼 %{ #define YYDEBUG 1 #include <stdi

    0熱度

    1回答

    以下是YACC代碼: %{ #include<stdio.h> #include<math.h> %} %token NUMBER %left '-' '+' %left '*' '/' %nonassoc UMINUS %% statement:expression {printf("Answer=%g\n",$1);} ; expression:expression'+'

    0熱度

    1回答

    我知道我的語法錯誤的部分原因,但我不知道如何解決它,我甚至使用%左和右,但它沒有幫助。任何人都可以幫助我找出這個語法有什麼問題。 在此先感謝您的幫助。 %token VARIABLE NUM %right '=' %left '+' '-' %left '*' '/' %left '^' %start S_PROOP EQUATION_SEQUENCE : FORMULA

    0熱度

    1回答

    編輯#1:我認爲問題出在我的.l文件中。我不認爲規則被視爲規則,我不知道如何將規則的終端視爲字符串。 我編譯器類的最後一個項目是爲一個簡單的SQL語法編寫一個.l和一個.y文件。我沒有Flex或Yacc的經驗,所以我寫的所有東西都拼湊在一起。我只對這些文件的工作原理有一個基本的瞭解,所以如果你發現我的問題,你是否也可以解釋文件的那部分應該做什麼?我甚至不確定'%'符號的作用。 基本上,當我嘗試解析

    5熱度

    2回答

    我試圖創建一個使用golang's yacc tool解析器。我發現nex可以簡化爲解析器創建詞法分析器。我現在的問題是,生成的分析器沒有方法或字段讓我訪問解析結果。我可以將分析結果存儲在全局變量中,但這似乎是錯誤的。 目前我已經添加以下內容作爲初次嘗試我parser.y文件的頂部: type ResultParser interface { yyParser // Generated

    -1熱度

    1回答

    我正在寫一個解析器一個相當簡單的語言。該語言將允許描述具有房間的遊戲。房間包含「人物」和「事物」。角色有「選項」,可以讓你與他們互動;選項可以在開始與角色交互後形成允許多個分支的樹。 我經歷了幾次反覆去了,問了一些問題,並最終得到了我的分析器進行編譯。但是當我在示例輸入上運行它時,我得到了語法錯誤,但沒有指出錯誤發生在哪一行。 我用我的谷歌福,發現應該生成代碼,將讓yylloc充滿了當前的行號旗-

    -2熱度

    1回答

    我正在使用lex和yacc,我需要創建兩個輸出文件。我需要做什麼(如果有任何功能可以製作多個文件),以及如何命名每個文件? 使用lex和yacc,我需要用css測試一個html文件,並從中生成兩個文件,一個使用html,另一個使用css。基本上從HTML分離的CSS,並把它放在不同的文件。 如果有人可以提供如何生成兩個輸出文件的簡單示例。

    0熱度

    3回答

    我想在YACC文件中添加結構工會,但我發現這個錯誤: "error : member 'Info YYSTYPE ::info' with constructor not allowed in union " %{ #include <cstdio> #include <iostream> using namespace std; extern "C" int yylex();