gpt4 book ai didi

javascript - 如何在 Happy 解析器中匹配正则表达式?

转载 作者:行者123 更新时间:2023-11-30 08:11:48 25 4
gpt4 key购买 nike

我正在用 Happy 编写一个 JavaScript 解析器我需要匹配一个正则表达式。我不想完全解析正则表达式,只是将其存储为字符串。

我的 AST 的相关部分如下所示:

data PrimaryExpr
-- | Literal integer
= ExpLitInt Integer
-- | Literal strings
| ExpLitStr String
-- | Identifier
| ExpId String
-- | Bracketed expression
| ExpBrackExp Expression
-- | This (current object)
| ExpThis
-- | Regular Expression
| ExpRegex String
-- | Arrays
| ExpArray ArrayLit
-- | Objects
| ExpObject [(PropName, Assignment)]
deriving Show

这是相关的 Happy 代码:

primaryExpr :: { PrimaryExpr }
: LITINT { ExpLitInt $1 }
| LITSTR { ExpLitStr $1 }
| ID { ExpId $1 }
| THIS { ExpThis }
| regex { ExpRegex $1 }
| arrayLit { ExpArray $1 }
| objectLit { ExpObject $1 }
| '(' expression ')' { ExpBrackExp $2 }

我的问题是,我应该如何定义我的 regex 非终端?这样的结构对吗?

regex :: { String }
: '/' whatHere? '/' { $2 }

最佳答案

您应该将正则表达式定义为词法分析器(即 LITREGEX)可识别的终端。

primaryExpr :: { PrimaryExpr }
: LITINT { ExpLitInt $1 }
| LITSTR { ExpLitStr $1 }
| LITREGEX { ExpRegex $1 }
| ID { ExpId $1 }
| THIS { ExpThis }
| arrayLit { ExpArray $1 }
| objectLit { ExpObject $1 }
| '(' expression ')' { ExpBrackExp $2 }

关于javascript - 如何在 Happy 解析器中匹配正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9270766/

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