上終止並解析錯誤我的詞法分析器應該在分類期間區分括號並保留一疊已打開的括號。爲此,我在我的FSL文件中指定一個輔助功能是這樣的:FsLex在'{'
let updateBracketStack sign = // whenever a bracket is parsed, update the stack accordingly
match sign with
| '[' -> push sign
| '{' -> push sign
| ']' -> if top() = '[' then pop() else()
| '}' -> if top() = '{' then pop() else()
| _ ->()
課程的堆棧是char列表的參考。推,頂,流行都相應地實施。
問題是,一切正常,直到我加入{
字符。現在FsLex簡單地error: parse error
死如果我改變字符的字符串,即寫"{"
FsLex很好了,所以解決方法是實施更改爲字符串,而不是字符的堆棧。
但是我的問題是,這種行爲從何而來?這是一個錯誤,如果FsLex?
你已經發布的代碼有'頂部()'的結果是相對於''[''在一場比賽分支(一個字符)和'‘{’'(字符串)在另一個比賽分支。這不應該編譯! 'top()'的返回類型可以是'char'或'string',但無論哪種方式,F#編譯器都應該在這兩個分支之一給你一個類型錯誤。你確定你沒有在粘貼這個問題的代碼的地方發生複製粘貼錯誤? – rmunn
修正了錯字,謝謝。然而,這與問題無關。不是F#編譯器不編譯,但fslex無法接受輸入並生成任何F#代碼。 –