有没有一种工具可以将PEG.js语法翻译成TextMate语法?
我正在构建自己的语言,并希望在我的首选编辑器TextMate中使用语法高亮显示.我语言的语法是用PEG.js构建的.根据此用例的 TextMate文档,我必须以与PEG.js不兼容的形式编写TextMate语法.
我开始编写一个新的TextMate语法,但我很快注意到翻译整个语法需要很长时间,甚至是与可接受的语法高亮相关的子集.由于我非常懒惰而且不想做所有这些繁琐的工作,我想到了自动完成这项任务.
谁能给我任何线索如何自动化,或者至少加速从PEG.js语法生成TextMate语法?
这不是与学校相关的问题,而是在练习中出现在龙书(编者:原则,技巧和工具)中:
语法:
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)