相关疑难解决方法(0)

从PEG.js语法生成TextMate语言语法

有没有一种工具可以将PEG.js语法翻译成TextMate语法?

我正在构建自己的语言,并希望在我的首选编辑器TextMate中使用语法高亮显示.我语言的语法是用PEG.js构建的.根据此用例的 TextMate文档,我必须以与PEG.js不兼容的形式编写TextMate语法.

我开始编写一个新的TextMate语法,但我很快注意到翻译整个语法需要很长时间,甚至是与可接受的语法高亮相关的子集.由于我非常懒惰而且不想做所有这些繁琐的工作,我想到了自动完成这项任务.

谁能给我任何线索如何自动化,或者至少加速从PEG.js语法生成TextMate语法?

grammar textmate syntax-highlighting peg pegjs

16
推荐指数
1
解决办法
1242
查看次数

回溯如何影响解析器识别的语言?

这不是与学校相关的问题,而是在练习中出现在龙书(编者:原则,技巧和工具)中:

语法:

S :: = aSa | AA

生成除了空字符串之外的所有偶数长度的字符串.

a)构造一个递归下降解析器,为这个语法提供回溯,在aa之前尝试替代aSa.显示S的过程在2,4或8 a上成功,但在6 a上失败.b)您的解析器识别哪种语言?

我很难过.似乎4 a被识别为S,并且S之间的两个a被识别,那么应该识别6 a.我尝试在C中实现解析器,但是这个也能识别所有偶数的a.这并不是没有认识到6个.这项练习有什么用途?

/* A C implementation of Exercise 4.13 in the Dragon Book */

/* The grammar:

   S ::= aSa | aa

*/

/* Construct a recursive-descent parser with backtracking for this grammar 
   that tries the alternative aSa before aa. Show that the procedure for S 
   succeeds on 2, 4, or 8 a's, but fails on 6 a's. 
*/

#include <string.h>
#include <stdio.h>

int S(const char *str, …
Run Code Online (Sandbox Code Playgroud)

c parsing

7
推荐指数
2
解决办法
1121
查看次数

标签 统计

c ×1

grammar ×1

parsing ×1

peg ×1

pegjs ×1

syntax-highlighting ×1

textmate ×1