zoukankan      html  css  js  c++  java
  • Proj THUDBFuzz Paper Reading: LL (*): The foundation of the ANTLR parser generator

    Notes







    4 LLstar Parsers

    1. ANTLR使用语义predicate来实现语法predicate
    2. 在确定具体走哪个分支之前,ANTLR不会执行action和语法predicate这种可能有后效性的代码块。对于必须要在推测,也即执行DFA推断的时候就加载的代码块,antlr3提供了语法{{}}

    5 LLstart Grammar Analysis

    5.1 Augmented transition networks

    语法分析有点类似inter-procedural flow analysis。这里,一个configuration可以视为一个当前所在的图节点和为了到达该节点所积累的call stack。具体来说,ATN configuration = (p, i, (gamma), (pi)),这里p指ATN state, i指当前预测的production编号,(gamma)指ATN call stack,(pi)可能存在的predicate

    5.2 Modified subset construction algo

    5.3 Avoid analysis intractability

    递归规则使得解析有陷入Loop,不停机的风险。有两种明显的策略:1. 只记录top m个states,以此停止计算 2. 只理会前m次递归。本文采用第2种,直接忽略>m次递归的推导,因为这样一般就够用了

    5.4 Aborting DFA construction

    如果某个Nonterminal对应的子规则有两条或以上都包含递归,那么我们认为DFA很有可能无法建模这个符号,此时,我们使用LL(1)+backtrack策略

  • 相关阅读:
    浅析平台营销
    基于物联网技术和RFID电子客票的铁路自己主动检票机
    海量数据存储
    Windows Serer 2003 配置手册 – 创建Active Dictionary域
    Java实现字符串转换成整数
    Java实现字符串转换成整数
    Java实现俄式乘法
    Java实现俄式乘法
    Java实现俄式乘法
    Java实现俄式乘法
  • 原文地址:https://www.cnblogs.com/xuesu/p/14697591.html
Copyright © 2011-2022 走看看