lexical

    1熱度

    1回答

    我最近在學習編譯原則。我注意到教科書中的所有示例都描述了一種語言詞法分析器,使用正則表達式的「lex」或「flex」來展示如何分析輸入源文件。 它表明所有已知的編程語言都可以使用類型3語法來實現詞法分析嗎?或者僅僅是教科書使用簡單的樣本來展示想法?

    1熱度

    1回答

    我正在學習JS中的詞彙範圍和執行上下文,並且遇到了一個問題。 我對關鍵字this的理解可能有限,但我發現它引用了任何函數的當前執行上下文中的所有變量。 考慮這個例子: function b(){ console.log(this); } var myVar = 1; b(); 在這裏,我會得到一個控制檯日誌myVar的,將被分配到現在價值1 這個例子: function a()

    1熱度

    2回答

    import如何在java的詞法分析中對語句和方法調用進行標記。例如: import java.util.Scanner 被此視爲import,java,util,Scanner(4令牌)或import,java.util.Scanner(2個令牌) 在同樣的思路,在: Scanner input = new Scanner(System.in); int x = input.nextInt()

    -2熱度

    2回答

    我必須爲標識符和數字的詞法分析器創建轉換圖。 的代碼包含如下: /* recursive factorial function */ int fact (int x) { if (x>1) return x * fact (x-1); else return 1; } void main (void) { int x;

    0熱度

    1回答

    我已經開始編寫自己的詞法分析器,並且由於它們具有與它們相關聯的開始(「)和結束(」)字符而導致令牌化字符串出現問題。 有沒有人知道一個常見的技術,一個詞法分析器可以應付並繼續lexing與一個未終止的字符串? 我認爲ANTLR可以做到這一點,這是由ANTLR的ATN處理? 我可以看到有是兩個問題在這裏假設字符串必須終止在同一行: 字符串終止發生在一個單獨的行 - 因此警告說,串只能在一個單一的放在

    1熱度

    1回答

    我正在寫一個cpp程序,它是一個類似於cpp的語言的詞法分析器。爲了找到每個標記,我使用正則表達式來匹配,然後決定選擇正確的標記。 這種語言的字符串和cpp完全一樣。我使用的正則表達式是這樣的: \"([^\\\"]|\\.)?\" 但它不是真的正確。對於這樣的輸入: "String \" int" 輸出應該是一個字符串標記,但我的正則表達式,我得到一個字符串標記(「字符串」)和一個int

    2熱度

    2回答

    我試圖寫一些讀取Lambda表達式並輸出一個測試版縮小版。 Lambdas將按如下方式鍵入:\ variable - >表達式和應用程序的形式(表達式)(表達式)。所以,如果「\」是在字符串的開頭找到它知道來處理Lambda和如果「(」發現它知道處理申請 我已經定義爲Lambda表達式類型: data Expression = Variable String | Lambda Ex

    1熱度

    2回答

    我在看R6RS(在算法語言計劃Revised6報告),在「引言」部分有一個總結: 「計劃是Lisp的第一個主要方言,它將程序與lambda表達式和符號區分開來,爲所有變量使用單個詞法環境,並以 作爲操作數位置來評估過程調用的操作符位置。 我的問題是: 什麼的「區分lambda表達式和符號的程序」有什麼好處? 什麼是單一的詞彙環境?我的理解是,由於詞法範圍的原因,Scheme中的所有內容都是「詞法」

    1熱度

    2回答

    問:鑑於二元字母{0,1},寫的正則表達式承認,至少有兩個連續的「1的所有單詞 ,例如0100110,0111,00010011001。 我的上述問題的回答是:0*{ (0|1)* 11+ }*

    1熱度

    1回答

    在編譯器的詞法分析階段,如果遇到錯誤的標記,詞法分析器將進入錯誤恢復模式,假設它放棄標記,直到看到下一個分號並再次開始分析。那麼生成的整個令牌傳遞給解析器? 我的意思是說,如果詞法分析器遇到錯誤,那麼編譯停止在這一點,或者它繼續並進入解析階段?