
编译原理
文章平均质量分 93
friklogff
2023「博客之星」TOP 46。坚持学习分享Python,Java,Go,C/C++,JavaScript,Rust,C#知识。
展开
-
【编译原理】小型语法编译器-Gradio界面设计
result.append("(保留字--{},{})".format(token_map[word], word))":result.append("(分号--26,{})".format(word))result.append("(等号--17,{})".format(word))result.append("(加号--13,{})".format(word))result.append("(减号--14,{})".format(word))原创 2024-05-28 19:28:18 · 1735 阅读 · 0 评论 -
【编译原理】LR(0)分析
因此,根据状态栈和符号栈的最大长度以及辅助变量的空间开销,LR0分析算法的空间复杂度可以达到O(n)级别。此外,我们还了解到算法分析的重要性,可以帮助我们评估算法的性能和效率,并进行算法的改进和优化。通过分析LR0分析算法的代码和运行过程,我们加深了对LR0分析算法的理解,并学习了如何使用LR0表进行语法分析。- LR分析的核心思想是将状态栈和符号栈与LR分析表进行交互,根据当前状态和下一个输入符号来确定执行移进或归约的动作,并更新状态栈和符号栈。每个单元格中的内容表示根据当前状态和输入符号进行的动作。原创 2024-05-27 18:16:02 · 1531 阅读 · 1 评论 -
【编译原理】算符优先分析法
output = f"({count})\t {AnalyseStack}\t {p}\t {a}\t {' ' * 17}{rem}\t 移进"其基本思想是:首先规定算符,这里是文法的终结符之间的优先关系,然后根据这种优先关系,通过比较相邻算符的优先次序来确定句型中的“句柄”,然后进行归约。为了降低实现的难度,本实验只要求实现步骤(3)的部分,即手动实现步骤(1)和(2),然后依据步骤(2)建立的分析表编写一个总控程序,实现句子的分析。print("错误!原创 2024-05-27 10:42:30 · 1766 阅读 · 0 评论 -
【编译原理】LL(1)预测分析法
确定的自顶向下分析思想是指自顶向下地对输入串进行分析,在每一步都根据当前的符号栈顶符号和输入串的当前符号,在分析表中查找所用产生式,然后将产生式右部的符号依次推入符号栈中,直到符号栈中只剩下底符号和输入串中所有符号都被读入为止。为了降低实现的难度,本实验只要求实现步骤(3)的部分,即手动实现步骤(1)和(2),然后依据步骤(2)建立的分析表编写一个总控程序,实现的句子的分析。读取文件内容和预测分析的时间复杂度主要取决于文法的长度和输入长度,通常为 O(m), 其中 m 为文法或输入的长度。原创 2024-05-25 20:20:30 · 1728 阅读 · 0 评论 -
【编译原理】词法分析器的设计与实现
具体描述识别过程时,识别单词的算法一般会根据编程语言的词法规则进行设计,通过状态机、正则表达式等方式来实现各种单词的识别。扩展词法分析器的功能可以通过添加更多的词法规则和相应的分类逻辑来实现,从而适应更复杂的编程语言要求。outFile原创 2024-05-25 10:36:02 · 1931 阅读 · 0 评论