ocamlyacc

    1热度

    1回答

    目前,我想要写在OCaml中的interpretter,这是我lexer.mll: { open Parser exception Eof } rule main = parse [ ' ' '\t' ] { main lexbuf } | [ '\n' ] { EOL } | ['0'-'9']+ as lxm { LINE_NUMB

    0热度

    1回答

    我想安排ocamllex和ocamlyacc代码来扫描和解析一个简单的语言。我已经定义了相同的抽象语法,但我发现难以扫描复杂的规则。这是我的代码 { type exp = B of bool | Const of float | Iszero of exp | Diff of exp*exp | If of exp * exp * exp } rule s

    1热度

    1回答

    我已经定义了一个散列表keyword_table来存储我的语言的所有关键字。这里是代码的一部分: (* parser.mly *) %token CALL CASE CLOSE CONST ... reserved_identifier: | CALL { "Call" } | CASE { "Case" } | CLOSE { "Close" } | CONST { "Const"

    0热度

    1回答

    我想解析f(arg).method和f(arg)为block_statement;第一个比第二个更重要。 在parser.mly下列元素无法解析f(arg),但可以解析f(arg).method如下: (* f(arg).method *) BS_MAE MAE_LE_UN ( LE_IE IE_LE_AL ( LE_SNE SNE_I f, AL_I ar

    0热度

    1回答

    我正在写一个分析许多独立文件的分析器。所有的文件具有相同的结构:它有一个Initiation(),然后是几个过程。例如: Sub Initiation() ... End Sub Sub procedure1() ... End Sub Sub procedure2() ... End Sub ... 的Initiation()引发的一切,然后每道工序的分析是独立的。在

    2热度

    1回答

    我重新提出了一个我以前问过的问题。目的是了解优先级在解析中的工作原理。 我想解析一条语句a(3).value = 100。 parser.mly在阅读.后停止,并返回错误。 但是,如果我将竭诚为argument_list部分(由begin和end EN-globed)在文件的结尾(因此是l_expression)之后,解析效果很好。 在语句被解析的情况下,它被简化为let_statement的da

    2热度

    2回答

    我已经实现了用于在我的代码中读入/打印类型的词法分析器/分析器/漂亮打印机的常用组合。当涉及到普通字符串正则表达式时,我发现在词法分析器和漂亮打印机之间存在冗余,通常用于符号,标点符号或分隔符。 比如我现在有 rule token = parse | "|-" { TURNSTILE } 在我lexer.mll文件,并像一个函数: let pp fmt (l,r) = Fo

    -1热度

    1回答

    我想解析一组表达式,例如:X[3],X[-3],XY[-2],X[4]Y[2]等 以我parser.mly,index(这是内[])被定义为如下: index: | INTEGER { $1 } | MINUS INTEGER { 0 - $2 } 令牌INTEGER,MINUS等在词法分析器定义为正常。 我试着解析一个例子,它失败了。但是,如果我评论| MINUS INTEGER { 0

    0热度

    2回答

    的,我想分析一组表达式:R[3]C,R[2]C,R[3]C-R[2]C ...有冲突,我不能解决... ... 这里是lexer.mll部分: rule token = parse | 'R' { R } | 'C' { C } | "RC" { RC } | ['0'-'9']+ as lxm { INTEGER (int_of_string

    2热度

    1回答

    我的代码: Term : ... | VAR { try Hashtbl.find var_table $1 with Not_found -> printf "no such variable '%s'\n" $1; 0.0 } /*(Line:75)*/ ... ,当我运行它, ocamlc -c parser.ml下我明白了: Error: This exp