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表达式的语法来说确实没问题,但确定那不是我想要的