我有一个bbcode->html转换器,它响应文本区域中的更改事件。目前,这是使用一系列正则表达式来完成的,并且存在一些病态案例。我一直想在这个语法上削尖铅笔,但不想涉足剃牛毛。但是......最近我开始意识到pegjs,这似乎是PEG解析器生成的一个非常完整的实现。我已经指定了大部分语法,但现在我想知道这是否适合使用成熟的解析器。我的具体问题是:由于我的应用程序依赖于将我能翻译的内容翻译成HTML并将其余部分保留为原始文本,因此使用可能因语法错误而失败的解析器实现bbcode是否有意义?例如:[url=/foo/bar]clickme![/url]一旦输入结束标记上的结束括号,肯定会
我正在尝试为PEG.js编写一个简单的语法来匹配如下内容:sometext;arbitraryothertextthatcanalsohaveµnicode;differentexpression;let'sescapethe\;semicolon,and\notrecognizedescapesarenotaproblem;possiblylastexpressionnotendingwithsemicolon所以基本上这些是一些用分号分隔的文本。我的简化语法看起来像这样:start=flow:FlowFlow=instructions:Instruction*Instruction
我正在尝试扩展PEG.js的示例语法为我的在线BASIC解释器实验使用所有4个运算符解析数学表达式:http://www.dantonag.it/basicjs/basicjs.html但并非所有表达式都被正确解析。这是我的PEG语法:expression=additiveadditive=left:multiplicativeatag:("+"/"-")right:additive{return{tag:atag,left:left,right:right};}/multiplicativemultiplicative=left:primaryatag:("*"/"/")right:
我仍然在与Qt的qmake的模棱两可的语法作斗争。现在我找不到一种方法来描述可以包含括号的函数参数(例如正则表达式):functionName(arg1,"arg2",^(arg3)+$)我试过这样描述函数调用:FunctionCall=Identifierspace*"("space*FunctionArgumentList?space*")"space*eol*FunctionArgumentList=FunctionArgumentString((space*","space*FunctionArgumentString)*/(blank*FunctionArgumentStri
如何使用AbstractSyntaxTree为左关联运算符构建AST(PEG.js)?我试着根据网上的资料写了一些代码,但是我好像犯了一个错误。我编写的代码为大多数表达式生成了不正确的AST。表达式12-6-4-2*1-1预期的AST{"left":{"left":{"left":{"left":12,"operator":"-","right":6},"operator":"-","right":4},"operator":"-","right":{"left":2,"operator":"*","right":1}},"operator":"-","right":1}生成的AST{