当前位置:  开发笔记 > 编程语言 > 正文

简单代码解析器的设计策略

如何解决《简单代码解析器的设计策略》经验,为你挑选了1个好方法。

我正在尝试编写一个应用程序来从专有的IDE设计文件中提取属性和代码.文件格式如下所示:

HEADING
{
  SUBHEADING1
  {
    PropName1 = PropVal1;
    PropName2 = PropVal2;
  }

  SUBHEADING2
  {
    { 1 ; PropVal1 ; PropValue2 }
    { 2 ; PropVal1 ; PropValue2 ; OnEvent1=BEGIN
                                             MESSAGE('Hello, World!');
                                             { block comments are between braces }
                                             //inline comments are after double-slashes
                                           END; 
    PropVal3 }
    { 1 ; PropVal1 ; PropVal2; PropVal3 }
  }
}

我想要做的是提取子标题块下的内容.在SUBHEADING2的情况下,我还将每个标记分隔为由分号分隔.我只是计算括号并跟踪我目前所处的副标题,取得了相当不错的成功.我遇到的主要问题涉及处理代码注释.

这种语言碰巧使用{}进行块注释,这会干扰文件格式中的括号.为了使它更有趣,它还需要考虑双斜线内联注释并忽略一直到行尾.

解决这个问题的最佳方法是什么?我查看了另一篇文章(ANTLR,Doxygen等)中讨论的一些编译器库,但它们似乎有点过分,无法解决这个特定的解析问题.



1> FastAl..:

我建议写一个标记器和解析器; 这会给你更多的灵活性.标记器基本上对源代码进行简单的文本分解,并将其置于更有用的数据结构中; 解析器通常利用递归来计算如何处理它.

谷歌的术语:标记器,解析器,编译器设计,语法

数学表达式评估程序:http://www.codeproject.com/KB/vb/math_expression_evaluator.aspx (您可以采用这样的示例并将其分解为您想要的内容)

有关解析的更多信息:http://www.codeproject.com/KB/recipes/TinyPG.aspx

你不必像那篇文章那样走得那么远,但是,你首先想要对这一篇文章进行一些研究.

推荐阅读
echo7111436
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有