【问题标题】:How to detect blocks of text如何检测文本块
【发布时间】:2012-07-16 19:58:39
【问题描述】:

是否可以在两个标记之间获取文本块? 我正在尝试编写我的 LOLCODE 版本并且我想做 if 语句 - 然后我遇到了这个问题。

基本的事情是,我想这样做:

IS #DIR = 5
    YUP
 -if statement suceeded, execute code here-
    NOPE
 -if statement returned false, execute code here
BYE

说明:这段代码应该检查变量#DIR是否等于5,如果是则在YUP块中执行代码,如果不是-在NOPE块中执行代码。

我的问题是:如何从文本文件中读取并使用 java 执行正确的代码块?

【问题讨论】:

  • 使用解析器显然是最好的途径。
  • @MarkoTopolnik 太棒了,谢谢,但是你对我应该使用什么解析器有任何想法 - 或者我应该做一个吗?
  • 制作一个,但不是从头开始。有一些库可以让您从 BNF 开始,其余的由它们负责。 antlr 就是这样一个库,非常受欢迎。

标签: java block lolcode


【解决方案1】:

试试这样的正则表达式:

searchText.matches("^\\s*IS\\s+(#\\w+)\\s*=\\s*(\\w+)\\s*")

这个表达式只计算第一行“IS #DIR = 5”但你可以完成它只是这样做的想法;)

编辑:如果内部代码块是 Java,也许这个链接可以帮助你:Dynamic code execution

【讨论】:

  • 这是我知道的东西。我唯一不知道的是如何运行正确的代码块。
  • 我编辑了包含动态代码执行链接的答案
  • 正则表达式对于解析嵌套结构毫无用处。
  • 谢谢,但我会使用 Marko 的建议来制作解析器 :)
猜你喜欢
  • 2011-08-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-10
  • 2020-01-09
  • 2017-10-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多