zoukankan      html  css  js  c++  java
  • 20041020

    昨天补记:

            昨天考虑Tiger语言的语法分析时遇到一个问题,本来考虑每一个文法非终结符都用一个二叉树节点来表示,但是其中的一个递归推导的文法就会出现深度很深的二叉子树。比如函数的参数列表,其实类似参数列表这样的并排结构,用一个链表结构来表达是最合适的了。今天早上醒过来的时侯,突然想明白了,其实只要每次在做文法规约的时侯,把规约出来的递归结构做一次转换,转成链表结构就可以了。举例如下:

            <函数声明>::=FUNCTION <<标识符>>(<参数列表>)
            <参数列表>::=<参数列表>,<参数定义>|<参数定义>
            <参数定义>::=<<标识符>>:<<标识符>>

            说明:这里“<<  >>”里的内容表示终结符,"< >"的内容表示非终结符,<<标识符>>可以认为是词法分析出来的一个终结符
            <参数列表>::=<参数列表>,<参数定义>|<参数定义>可以表示为
            E==>E,F|F
            这样,如果遇到形如 F,F,F这样的序列,可以,再作规约时,可以规约为
            E(F),F,F    -->  E(F,F),F  -->E(F,F,F) 链表的形式
            而不用规约成
            E(((F),F),F)二叉树的形式

            网上发现一个模拟LongHorn的右侧工具条的免费软件,很Cool哦!
                            http://www.desktopsidebar.com/
  • 相关阅读:
    Vim 配置 winmanager
    删除字符串中重复字符
    检查字符串中是否存在重复字符
    字符串逆序输出
    shell 循环使用
    Windows下JNI执行步骤
    JNI中使用cl命令生成DLL文件
    javaZIP压缩文件
    java Mail发送邮件
    关于在同一个DIV下的Hover效果问题
  • 原文地址:https://www.cnblogs.com/dragon/p/54464.html
Copyright © 2011-2022 走看看