浏览 1788 次
锁定老帖子 主题:Oracle的ora文件的BNF
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-05-16
工作中经常会用到oracle中的ora文件,比如tnsnames.ora等,看的多了,就像整理出ora的BNF定义。以前整理过一些BNF,用lex/yacc或者javacc可以很快的做出一个简单的解释器,所以对这些东西很感兴趣。好了,我们来看看ora的BNF吧:
config : ( parameter )*; parameter : keyword EQ ( value | '(' value_list ')' | ( '(' parameter ')' )+ ); keyword : WORD; value : WORD | QSTRING; value_list : value ( COMMA value )*; QSTRING : \' [~\']* \' | \" [~\"]* \"; WORD : [a-zA-Z0-9]; COMMENT : '#' [~\n]*; WHITESPACE : [\t ]+;
当然,这个只是简单的BNF,做成解释器还需要加入相应的动作解释。 仔细看了看自己的blog,发现之前也整理过类似的定义,比如:Lisp的BNF,还有dot语言的BNF。只有dot的做了一部分,Lisp的根本没有做,需要抽时间专门做一下,不然自己的手也生了。其实,如果掌握了正则表达式和上下文无关文法这两个部分,借助lex/yacc,javacc/anltr等工具很容易做出来,不过时间长了又忘了。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |