Parsing Tokenize.htaccess文件

Parsing Tokenize.htaccess文件,parsing,.htaccess,tokenize,Parsing,.htaccess,Tokenize,我打赌你没想到会发生这种事 所以,我的一个项目需要我专门阅读并理解 可悲的是,在谷歌上搜索只会给那些试图让自己的.htaccess工作的人们带来无穷的痛苦(对不起,无法抗拒评论) 不管怎么说,我有点害怕尝试从使用它的开源项目中得到这个东西。你看,在过去的几周里,我浪费了很多时间试图用这个策略来解决我的问题,结果发现我读了RFC&Spec并按照自己的方式构建了这个东西 所以,如果您知道一个库,或者任何(希望是干净的!)代码,请分享。同时,如果您知道任何关于.htaccess文件格式的文章,我相信它

我打赌你没想到会发生这种事

所以,我的一个项目需要我专门阅读并理解

可悲的是,在谷歌上搜索只会给那些试图让自己的
.htaccess
工作的人们带来无穷的痛苦(对不起,无法抗拒评论)

不管怎么说,我有点害怕尝试从使用它的开源项目中得到这个东西。你看,在过去的几周里,我浪费了很多时间试图用这个策略来解决我的问题,结果发现我读了RFC&Spec并按照自己的方式构建了这个东西

所以,如果您知道一个库,或者任何(希望是干净的!)代码,请分享。同时,如果您知道任何关于.htaccess文件格式的文章,我相信它们会非常方便。谢谢

NB:我精通多种语言,可以使用任何代码库,即使最终代码是Delphi。我知道我要求的太多了,但是我希望看到更少的C++。在分享C++代码之前,先想想我的心理健康。p> 编辑:好吧,我想我将自己手动完成这项工作。文件结构似乎是:

directive arg1 arg2 argN
<begin directive section>
</end directive section>
# single line comment
指令arg1 arg2 argN
#单行注释

。htaccess语法实际上与Apache配置本身完全相同,并且确实存在用于它的示例解析器

如果你想写你自己的,你的格式基本上是正确的。请记住,节标记可以嵌套,并且可以有参数(如)

英语语法分析方法:

For each line in the file:
  Strip whitespace from beginning and end of line.
  If the line starts with a '#':
    Parse it as a comment (or skip it)

  Else, If the line starts with a '<':
    If the next character is a '/', the line is a closing tag:
      Seek to the next '>' to get the tag name, and pop it from the tag stack.
    Else, the line is an opening tag:
      Seek to the next '>' for the tag name.
      If the tag, trimmed, contains whitespace:
        Split on the first whitespace. The right side is params, left is the tag. 
        (IfModule, Location, etc use this)

      Push the tag name to the tag stack.

  Else, the line is a directive:
    Split the line on whitespace. This is the directive and params.
对于文件中的每一行:
从行首和行尾去除空白。
如果该行以“#”开头:
将其解析为注释(或跳过)
否则,如果行以“”开头,则获取标记名,并将其从标记堆栈中弹出。
否则,该行是一个开始标记:
查找下一个“>”作为标记名。
如果修剪后的标记包含空格:
在第一个空格处拆分。右边是参数,左边是标签。
(如果模块、位置等使用此选项)
将标记名推送到标记堆栈中。
否则,该行是一个指令:
在空白处拆分行。这是指令和参数。

只需添加报价处理,就可以完成设置。

唯一想到的是Apache的源代码本身!一定会在某个地方有这个。这是官方的吗?我喜欢伪代码!会给不做任何C++的额外奖励,甚至更多的用Pascal风格编写它,但是唉,我不能给出超过+1的1。谢谢