ocamllex

    1熱度

    2回答

    我試圖在OCaml中編寫解釋器,我在這裏遇到問題。 在我的計劃,我想打電話給這樣的函數,例如: print (get_line 4) // print: print to stdout, get_line: get a specific line in a file 我怎麼能這樣做?問題出現在我們的解析器中,我認爲是這樣,因爲它定義了程序將如何運行,函數是如何定義的以及程序的流程。這是我迄今爲

    0熱度

    1回答

    我正在爲Excel公式編寫詞法分析器和分析器。 在Excel中,我們可以爲單元格指定一個名稱。例如,abc是有效的名稱,但是,禁止命名單元格B2以避免與單元格 B2混淆。因此,一旦我們遇到公式=B2,我們確信B2引用的是單元而不是用戶定義的名稱。 在我lexer_formula.mll,我已經定義的標識符: let lex_cell = ['A' - 'Z']+ ['0' - '9']+ (* r

    0熱度

    1回答

    我正在用Ocamllex爲Brainfuck編寫一個詞法分析器,爲了實現其循環,我需要更改lexbuf的狀態,以便它可以返回到流中的前一個位置。上Brainfuck(可跳過) 背景信息 在Brainfuck ,環路是通過一對方括號與 完成了以下的規則: [ - >繼續進行,並評估下一個標記 ] - >如果當前單元格的值不是0,則返回匹配的[ 因此,下面的代碼的計算結果爲15: +++ [ > ++

    1熱度

    1回答

    我正在編寫一個轉到Python編譯器的OCamllex和Menhir,但是我的詞法分析器無法導入Core包。 這裏是我的lex.mll文件: { (* Header *) open Core.Std open Lexing open Parser exception SyntaxError of string let next_li

    0熱度

    1回答

    我有下面的代碼也有更多像expr:int {} |布爾{}等,但我不知道什麼是我應該寫在這種解析器的類型,我有一個計算器的例子,與int一起工作,類型是int,但在我的程序中我有浮動字符串等。 %{ dont know what to write here %} %token <int> INT %token <float> FLOAT %token <char> CHAR %to

    5熱度

    1回答

    我寫一個小解析器與巨石+ Ocamllex和我有兩個要求,我似乎無法滿足的同時 我想保持一個錯誤之後解析(報告更多的錯誤)。 我想打印發生錯誤的令牌。 我可以很容易地通過使用error令牌。我也可以使用this question建議的方法輕鬆完成2) 。但是,我不知道一個簡單的方法來實現這兩個。 我處理錯誤的方式,現在是這樣的: pair: | left = prodA SEPARATOR ri

    0熱度

    1回答

    我有一些基本的ocamllex代碼,這是寫的我的教授,似乎是罰款: { type token = EOF | Word of string } rule token = parse | eof { EOF } | [’a’-’z’ ’A’-’Z’]+ as word { Word(word) } | _ { token lexbuf } { (*module S

    0熱度

    1回答

    如果我打電話給我的遊程編碼方案與編碼[1; 1; 2],我得到 int encode list = [Multiple (1, 2); Singles 1] 我怎麼會得到一個支架()的單打以及所以它會像[多(1,2);單打(1)]?

    2熱度

    1回答

    在Chapter 12 Lexer and parser generators,我無法編譯下面的例子: { type token = EOL | INT of int | PLUS module Make (M : sig type 'a t val return: 'a -> 'a t val bind: 'a t -> ('a -> 'b

    0熱度

    1回答

    我正在嘗試用一些特殊的本地語言(這是爲我的目的修改)爲ocamllex編寫詞法分析器。有些詞應該與他們的第一個字符匹配,即加倍。但我沒有找到任何方式來表達第一個字符的重複。無論是我可以使用正則表達式語法 ([ '一個' - 'Z'])\ 1 'A' - 'Z'] + 與 「\ 1」。 Ocamllex說「非法逃跑序列\ 1」。我認爲這對於escape表達式的語法來說確實沒問題,但確定那不是我想要的