随笔分类 -  编译原理

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