【发布时间】:2015-12-13 21:55:39
【问题描述】:
我正在为某种文件编写一个小型解析器,我必须完成的一件事是查找一行是否在另一行内,并使用缩进(空格或制表符)定义它。
例子:
This is the main line
This is a nested or child line
我试图通过读取该行中的第一个字符位置并将其与前一个字符位置进行比较来确定这一点:
var str = ' hello';
str.indexOf(str.match(/\S|$/).shift());
我确定这不是最好的方法,而且看起来很糟糕,我还有其他问题要解决,比如检查缩进是否由空格(2 或 4)或制表符组成,或者传递/保持状态上一行(对象)的。
此外,行可以无限嵌套,当然我更多的是寻找一个好的和高性能的算法(或想法)或模式,而不是我认为相对容易做但容易出错的简单检查。我确信使用解析器和编译器的人已经解决了这个问题。
编辑:
str.search(/\S/);
@Oriol 提案看起来好多了
【问题讨论】:
-
也许这看起来更好:
str.search(/\S/) -
这好多了,谢谢@Oriol
-
这是“行可以嵌套”,还是“行可以无限嵌套”?因为这在如何实施解决方案方面有点不同
-
行可以无限嵌套,当然我更多的是寻找一个好的和高性能的算法(或想法),或者模式而不是我认为相对容易做但容易出错的简单检查.
-
请使用该信息更新您的问题,以便其他可能愿意帮助您回答问题的人受益。
标签: javascript parsing compiler-construction