随笔分类 - 编译原理
摘要:一个01串S能匹配如下表达式当且仅当S是一个可以被3整除的二进制数, ^1((10*1)|(01*0))*10*$ 可以手动试一试,输入如下代码到浏览器的控制台,回车运行: javascript:alert(/^1((10*1)|(01*0))*10*$/.test("1000000100")) 原
阅读全文
摘要:题意 输入两个正规表达式,判断两者是否相交(即存在一个串同时满足两个正规表达式)。本题的正规表达式包含如下几种情况: 单个小写字符 $c$ 或:($P | Q$). 如果字符串 $s$ 满足 $P$ 或者满足 $Q$,则 $s$ 满足 $(P| Q)$ 连接:($PQ$). 如果字符串 $s_1$
阅读全文
摘要:题意 一个DFA可以用一个5元组 $((Q, \sum , \delta , q_0, F))$ 表示,其中 $Q$ 为状态集,$\sum$ 为字母表,$\delta$ 为转移函数,$q_0$ 为起始状态,$F$ 为终态集。给出两个 DFA(有限状态自动机),判断他们是否等价。 分析 一个简单的做法
阅读全文
摘要:在编译原理的语法分析中,很多文法都是递归形式给出的。 假设有如下文法: G[F]: F→fG G→gF 判断字符串 a 是否满足的程序如下: 易知,这个程序输出总为 -1,因为不存在有限长的 F,F = fgF. 反过来,要想结果输出的不是 -1,F的结果是G(pos+1),G的结果又是F,不可能从
阅读全文