gpt4 book ai didi

parsing - 如何为类似 JSP/ASP/PHP 的语言编写 ANTLR 解析器?

转载 作者:行者123 更新时间:2023-12-04 15:28:15 26 4
gpt4 key购买 nike

我是解析器生成器的新手,我想知道 JSP/ASP/PHP 等嵌入式语言的 ANTLR 语法可能是什么样子,但不幸的是,ANTLR 站点不提供任何此类语法文件。

更准确地说,我不知道如何定义一个匹配所有内容的 AnyText token (包括在代码块之外没有任何意义的关键字)并且仍然能够在 block 内正确识别它们。

例如,以下片段应标记为:AnyText、BlockBegin、Keyword、BlockEnd、AnyText。

lorem ipsum KEYWORD dolor sit <% KEYWORD %> amet

也许还有另一个更适合我需要的解析器生成器。到目前为止,我只尝试过 ANTLR,因为它在 stackoverflow 上非常受欢迎:)

提前谢谢了!

最佳答案

我不能代表 ANTLR,因为我使用了不同的词法分析器/解析器(DMS Software Reengineering Toolkit,我已经为此开发了精确的 JSP 和 PHP 词法分析器/解析器。(ASP 与您在问题中观察到的不同) .

但基本思想是词法分析器需要词法模式来识别您何时选择“任何文本”以及何时处理“真实”编程语言文本。
所以你需要一个起始词法模式,比如 HTML,它的工作是吸收 HTML
文本,当它遇到转换到 PHP 时,切换模式。
您还需要一个 PHP 模式来获取所有 PHP token ,
并在遇到转出字符时切换回 HTML 模式。
这是一个草图:

%%HTML -- mode
#token HTMLText "~[]* \< \% "
<< (GotoPHPMode) >>

%%PHP -- mode
#token KEYWORD "KEYWORD"
...
#token '%>' "\%\>"
<< (GotoHTMLMode) >>

您的词法分析器生成器可能具有某种模式切换功能
你必须使用它来代替它。你可能会发现
对 HTML 内容进行词法分析比看起来更复杂(你必须担心
关于

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com