首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ocamllex中返回多个标记

在ocamllex中返回多个标记
EN

Stack Overflow用户
提问于 2010-08-09 14:42:11
回答 1查看 1.2K关注 0票数 7

有没有办法在OCamlLex中返回多个令牌?

我正在尝试为基于缩进的语言编写一个词法分析器和解析器,并且我希望我的词法分析器在注意到缩进级别比以前更低时返回多个DEDENT标记。这将允许它在多个块结束时通知解析器。

通过使用此方法,我将能够使用INDENTDEDENT作为BEGINEND的临时替代品,因为这两个令牌将由INDENTDEDENT令牌隐含。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-08-09 15:16:53

返回令牌列表。如果解析器不能在本地处理它(比如ocamlyacc) --只需在其间插入一个缓存:

代码语言:javascript
复制
let cache =
  let l = ref [] in
  fun lexbuf ->
    match !l with
    | x::xs -> l := xs; x
    | [] -> match Lexer.tokens lexbuf with
            | [] -> failwith "oops"
            | x::xs -> l := xs; x

或者,您可以在整个文档上运行lexer,然后在整个令牌流上运行解析器。

顺便说一句,你看到ocaml+twt了吗?

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3437841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档