使用语法高亮显示器perl

时间:2014-03-23 04:09:43

标签: regex perl

刚刚开始处理语法高亮显示的赋值(Perl中的代码)。我需要匹配评论,关键字和字符串,并以不同的颜色突出显示它们 任何人都可以给我一个提示从哪里开始?我只有两周的时间。 我使用正则表达式将文件的每一行拆分为标记。例如

  $my string = 'my @array = (56, "string", 56.5758);';
  my @b = $string =~ /([A-Za-z0-9'"\._\@\#\$]+)/g;

给出:

  my
  @array
  56
 'string'
  56.5758
然后我就可以开始分析了它们。我有以下问题: 1.我怎样才能将这些代币放回字符串?我的意思是我有空格,括号,&#34 ;;"和以前在令牌之间的其他字符。我该怎么办?

  '<keyword>my</keyword> @array = (56, <string>"string"<string>, 56.5758);

2。什么&#39;写荧光笔的最好方法是什么?只是使用正则表达式并尝试模拟所有不同的情况?

任何帮助人员都会非常感激。到目前为止,我没有取得多大进展。

非常感谢

1 个答案:

答案 0 :(得分:8)

不要试图使用正则表达式;使用PPI。任何解析perl的尝试都充满了危险; PPI解决了几乎所有可能遇到的perl代码的问题。

还有很多代码需要编写才能使语法高亮显示;你应该检查一下你是否可以使用它。 (如果你不能,我认为你的教练要求执行这样的任务很糟糕;更好的做法是为一个可以用BNF或EBNF表示的东西编写语法高亮显示器,例如{{3 }}或CPython。)