[编译原理]PTA复习笔记

同济土木非0基础三个月跨考复旦计算机攻略 跨考cs攻略前言我cs专业课如何复习How to start from zero简历其他复试 前言 建议多去工地/化工厂涡轮增压一下 我 同济土木gpa 3.2/5 挂科 * n 辣鸡项目 * n (padding 简历) 21考复旦计算机专硕 10月-12月 学习+复习 总分392 政治 68;背肖4即可 英语二 78 裸考,(高考英语140+);做点真题,建议据自己情况准备 数学二 142 ;(高考数学接近满分);做真题+模拟题,每天写一张试卷 专业课 104 ,考试生病了,下文展开。 cs专业课 阅读详情

编译原理复习笔记

递归下降

#include<bits/stdc++.h>
using namespace std;
char a[100];
int cur=0;
int N=0;
void E();
void T();
void G();
void S();
void F();

/**
E-->
**/
int main(){
    scanf("%s",&a);
    if(a[cur]!='i'&& a[cur]!='('){
         cout<<"error"<<endl;
         exit(0);
    }
    E();
    if(a[cur]!='#'){
        cout<<"error"<<endl;
    }
    else{
        cout<<"accept"<<endl;
    }
}
void E(){
    cout<<N<<" E-->TG"<<endl;
    N++;
    T();
    G();
}
void T(){
    cout<<N<<" T-->FS"<<endl;
    N++;
    F();
    S();
}
void G(){

    if(a[cur]=='+'){
         cout<<N<<" G-->+TG"<<endl;
         N++;
         cur++;
         T();
         G();
    }
    else{
        cout<<N<<" G-->&"<<endl;
        N++;
    }
}
void F(){
    if(a[cur]=='('){
        cout<<N<<" F-->(E)"<<endl;
        cur++;
        N++;
        E();
        if(a[cur]==')'){
            cur++;
        }
        else{
            cout<<"error"<<endl;
            exit(0);
        }
       }
    else if(a[cur]=='i'){
        cout<<N<<" F-->i"<<endl;
        cur++;
        N++;
    }
    else{
        cout<<"error"<<endl;
        exit(0);
    }

}
void S(){
    if(a[cur]=='*'){
        cout<<N<<" S-->*FS"<<endl;
        N++;
        cur++;
        F();
        S();
    }
    else{
        cout<<N<<" S-->&"<<endl;
        N++;
    }
}

翻译布尔表达式

#include<bits/stdc++.h>
using namespace std;
vector <string> ans;
string s;
int main(){

        getline(cin,s);
        s+=" end";
        string x;
        int t =1,f=100;
        stringstream ss(s);
        int id =100;
        while(ss>>x){
            if(x == "or"||x=="end"){
                if(x=="or") f+=2;
                else f=0;
                int i;
                int n = ans.size();
                for(i=0;i<n-3;i+=3){
                printf("%d(j%s,%s,%s,%d)\n",id,ans[i+1].c_str(),ans[i+0].c_str(),ans[i+2].c_str(),id+2);
                id++;
                printf("%d(j,_,_,%d)\n",id,f);
                f =id++;
            }
                printf("%d(j%s,%s,%s,%d)\n",id,ans[i+1].c_str(),ans[i].c_str(),ans[i+2].c_str(),t);
                t = id -(n-3)/3*2;
                id++;
                printf("%d(j,_,_,%d)\n",id,f);
                id++;
                ans.clear();
                if(x=="end")break;
            }

            else if(x == "and") f+=2;
            else
                ans.push_back(x);
            }
    }


小C语言

//********************
//小C语言--词法分析程序**
//********************

/*解法1*/
#include <iostream>
#include <string>
#include<stdio.h>
#include<bits/stdc++.h>
using namespace std;
string s[5]={"keyword","identifier","integer","boundary","operator"};
string t[6]={"main","if","else","for","while","int"};
void pre(string ch)
{
    if(ch[0]>='0'&&ch[0]<='9') {cout<<"("<<s[2]<<","<<ch<<")"<<endl;}
    else
    {
        int f=1;
        for (int i=0;i<6;i++)
            if(ch==t[i])
            {
                cout<<"("<<s[0]<<","<<ch<<")"<<endl;
                f=0;break;
            }
        if(f)
        cout<<"("<<s[1]<<","<<ch<<")"<<endl;
    }
}
int main()
{
    string p;
    while(cin>>p)
    {
        string temp="";
        int len=p.length();
        for(int i=0;i<len;i++)
        {
            if(p[i]=='='||p[i]=='+'||p[i]=='-'||p[i]=='*'||p[i]=='/'||p[i]=='!'||p[i]=='<'||p[i]=='>')
            {
                if(temp.length()) pre(temp);
                temp="";
                if(i+1<len&&p[i+1]=='=')
                {
                   cout<<"("<<s[4]<<","<<p[i]<<p[i+1]<<")"<<endl;i++;
                }
                else cout<<"("<<s[4]<<","<<p[i]<<")"<<endl;
            }
            else if(p[i]=='{'||p[i]=='}'||p[i]=='('||p[i]==')'||p[i]==','||p[i]==';')
            {
                if(temp.length()) pre(temp);
                temp="";
                cout<<"("<<s[3]<<","<<p[i]<<")"<<endl;
            }
            else temp+=p[i];
        }
        if(temp.length()) pre(temp);
    }
    return 0;

}
计算机保研夏令营全攻略:从材料准备到八校考核实战复盘 在计算机专业深造路径中,研究生推免夏令营是连接本科学习与科研实践的关键环节,其本质是一场综合能力评估。从技术原理看,它系统考察学生的数据结构、算法设计、操作系统等计算机核心课程掌握程度,以及解决实际工程问题的能力。这种考核模式的技术价值在于,能够有效筛选出具备扎实理论基础、良好编程习惯和初步科研潜力的学生,为高校选拔优质研究人才提供依据。在应用场景上,不同院校侧重点各异:有的侧重算法与系统设计,通过在线编程平台测试代码规范性与健壮性;有的聚焦数据科学实践,考察数据清洗、特征工程和建模全流程;还有的注重学术深 阅读详情

相关推荐

C语言教学设计:指针、循环与链表文件读写的工程实践

C语言是计算机科学的基础语言,其核心在于理解内存、数据类型与程序控制流的底层原理。从变量、数组到指针,每一层抽象都建立在对内存地址的深刻认知之上。掌握while与do-while的结构差异、字符串及数组的边界处理,是编写健壮程序的起点。同时,通过双向链表、文件读写操作,能够将结构体与动态内存管理融合为完整的工程能力。面对编译警告、常见语法混淆及内存管理问题,系统性地排查与复盘能大大提升学习效率。本文从这些C语言高频知识点入手,结合VSCode环境配置与经典训练项目,梳理出一条从语法基础到综合项目落地的教学实

weixin_33483304的博客 340

编译原理---简单的代码生成程序

题目: 通过三地址代码序列生成计算机的目标代码,在生成算法中,对寄存器的使用顺序为:寄存器中存有 > 空寄存器 > 内存中存有 > 以后不再使用 > 最远距离使用 Input 单组输入,给定输出的三地址代码的个数和寄存器的个数.所有的变量为大写字母,寄存器的数量不超过9 Output 参照示例格式输出,不需要将最后的寄存器中的值写回内存 不再使用变量不用写回内存...

weixin_42761339的博客 1196

手把手拆解:储能电站如何实现‘孤岛运行’与‘黑启动’?从SVPWM控制到无缝并网

本文深入解析储能电站的孤岛运行与黑启动技术,从SVPWM控制策略到电网重构实战。通过详细的三环控制架构和黑启动五阶段技术路线,展示储能电站在电网故障时如何快速切换为独立电压源并实现电网重建。文章还探讨了虚拟惯量补偿、多站协同控制等前沿技术,为电力系统应急恢复提供关键解决方案。

weixin_30509393的博客 304

习题笔记:编译原理目标代码生成

ArtinCode 1292

技能伤害继承英雄属性【War3地图编辑器】

风暴之锤跟随山丘之王的力量增长

ArYe 2301

6.2 磁悬浮轴承:软件架构与实现

本文系统阐述了磁悬浮轴承控制系统的软件架构与实现方法。采用分层架构设计,包括硬件抽象层、实时控制内核、控制算法层和应用层,确保系统实时性和可靠性。重点分析了电流环、位置环等关键控制任务的调度策略,比较了不同硬件平台(DSP、ARM、FPGA)的软件实现方案。强调模块化设计、配置化管理等工程实践,并详细介绍了从算法仿真到系统联调的完整开发流程。最后指出严格的测试验证是保证系统性能的关键,需通过多阶段测试评估起浮时间、稳态精度等核心指标。

技术工作者 752

提交到PTA的套路

在PTA提交Java程序需要注意如下几个要点。 1. Main类与Scanner 1.1 Main类 你提交的所有程序都应该有一个Main类,并且必须是声明为public 1.2 输入与输出 Java中使用Scanner处理输入。你需要注意如下几个地方 程序开头必须import java.util.Scanner导入Scanner类。 使用Scanne

yangxue_mifen的博客 8348

算法-基于MACD的Adaboost股价涨跌预测模型

MACD是一个指标,具体用法是MACD>0看涨,反之看跌,果真是这样的吗?由于所有的技术指标都基于对历史数据的统计,指标的滞后性也就难免,有时候MACD明明大于0,股价仍然跌,有时候macd小于0,股价仍然涨。 本文基于Adaboost算法提出了一种基于macd的线性阀值分类器作为若分类器,通过在限定的解空间内寻找使得错误率最小的阀值和偏置,这样做避免了训练若分类器的复杂性,经验证,这种方法有效。

mtaxot的博客 8023

编译原理 语法分析 pta

weixin_49220417的博客 499

基因家族扩张收缩分析可视化(CAFE5)

CafePlotter 是一个用于可视化 CAFE5 基因家族扩张收缩分析结果的 Python 工具

xuzhougeng blog 3636

VCSA 6.7证书更新全流程指南:从故障诊断到完整替换

本文详细介绍了VCSA 6.7证书更新的全流程,包括故障诊断、证书替换操作步骤及常见问题解决方案。通过使用官方脚本和证书管理器,帮助管理员快速解决证书过期问题,确保vCenter系统的稳定运行。特别强调了STS证书修复和全量证书重置的关键步骤,适用于vcsa6.7环境下的证书管理需求。

weixin_42634811的博客 450

编译原理第二次复习

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> ...

ruankun521的博客 161

Colmap参数调优实战:如何通过5个关键设置提升3D重建精度

本文深入探讨Colmap参数调优实战,通过5个关键设置显著提升3D重建精度。重点解析特征匹配参数、BA优化配置、初始化策略、资源分配及动态调整方法,结合量化数据和实际案例,帮助开发者精准优化重建流程,适用于古建筑扫描、无人机航拍等多种场景。

weixin_30872157的博客 432

编译原理第三版清华pdf_清华网络科学与网络空间研究院考研经验分享

清华网络科学与网络空间研究院考研经验分享盛世清北,清北硕博摇篮,专注清华北大考研辅导近十年,盛世清北-北京大学考研辅导班开设清华土木工程考研辅导系列课程。上清华北大,就上盛世清北!考试科目参考书目专业课:《数据结构(C++语言版)》 邓俊辉 著《数据结构习题解析》 邓俊辉 著《数据结构》 严蔚敏,吴伟明 著《数据结构精讲与习题详解》 殷人昆 著《计算机组成原理》 唐朔飞 著《计算机组成原理习题解析...

weixin_39878760的博客 3308

群晖如何安装软路由OpenWrt/iStoreOS作为旁路由(含网络设置、设置密码、还原出厂设置等linux命令ipk包)

openwrt的固件。

XiaoqiangClub的博客 7017

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

211逆袭保研浙大

这段时间是高校夏令营发通知高峰期,一般前几个通知的学校无论高低,都会被冲爆,大家可以拿这个学校的报名系统练手。后面没过没关系(毕竟太多大佬冲了)。这段时间的学校建议应投尽投,不要想着准备好了预推免再来,一定拿一个可以上的保底,这样九月不会慌,不然九月真的很惨烈,见识到那种场面心态会崩。这段时间是预推免高峰期,十来天会很难,但撑过就会很好!推免就是走个形式,和前两个阶段的选好的学校填系统。

weixin_52658189的博客 489

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

程序设计类实验辅助c语言,程序设计基础与实验

spContent=C语言是古老而长青的编程语言,它具备了现代程序设计的基础要求,它的语法是很多其他编程语言的基础,在系统程序、嵌入式系统等领域依然是无可替代的编程语言,在各类编程语言排行榜上常年占据前两名的位置。本课程是零基础的编程入门课,是后续的操作系统、编译原理、体系结构等课程的基石。—— 课程团队课程概述程序设计是一门基础课程。对于计算机相关专业而言,程序设计是专业基础知识,是进一步学习其...

weixin_39774905的博客 329

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

致最后【个人】

致最后【个人】

小心星的博客 1562

PAT甲级感悟(2019年9月8日秋期考的试)

今天刚刚考完PAT,趁着还没忘干净,写下此篇文章,不敢说是经验,也不敢谈什么心得,只想把自己的感悟分享给大家。 先膜一下柳神:柳神博客是真的好用,没得说,我基本上就是看柳神的博客,然后刷题,然后再看博客 今天的考试,进考场之前很紧张,疯狂喝水,疯狂喝,然后就上厕所,真的很紧张,以至于刚开始写代码的时候手还有点抖。第一题就给我整懵了,这题是啥?这说的啥?我该咋做?一顿阅读理解之后,开始写代码,完了...

qwe1765667234的博客 767

300集C语言教程全解析:从零基础到项目实战的自学指南

C语言作为计算机编程的基石,其核心在于对内存、指针和底层硬件的直接操作能力。理解C语言的工作原理,不仅有助于掌握编程基础,更能为学习操作系统、编译原理等核心课程打下坚实基础。从环境搭建到语法掌握,再到数据结构与算法实现,系统学习C语言能够培养严谨的编程思维和高效的代码调试能力。在嵌入式系统、操作系统开发、高性能计算等应用场景中,C语言因其高效性和可控性而不可替代。本文以一套体系化的300集C语言教程为切入点,详细规划了从零基础到项目实战的自学路径,重点涵盖指针、内存管理等核心难点,并通过通讯录管理系统等经典

weixin_34126557的博客 344

C语言零基础教程:100集系统学习路径与实战项目指南

C语言作为计算机编程的基石,其核心在于对内存、指针和底层系统的直接操作。理解其原理,是掌握计算机科学基础、深入操作系统和嵌入式开发的关键。从基础语法、数据类型到函数与模块化设计,C语言构建了结构化编程的典范。其技术价值在于提供了对硬件资源的精细控制,培养了严谨的编程思维,是学习C++、数据结构乃至系统编程的必经之路。应用场景广泛,从操作系统内核、嵌入式设备到高性能服务器开发,都离不开C语言的支撑。本文围绕一套体系完整的C语言零基础教程,结合【指针】和【内存管理】等核心热词,拆解了从环境搭建、核心概念攻克到综

weixin_34176694的博客 447

【PTAMM】PTAMM编译过程若干非常见错误解决方法

错误整理2015.3.20 错误显示 错误来源 解决办法 cvd_src/i686/yuv411_to_stuff_MMX_64.C:246:1: 错误: bp 不能在这里用于 asm libcvd X64 ./configure --without-ffmpeg --without-mmxext ./gvars3/serialize.h:77: er

xueyinhualuo的专栏 1549

[编译原理]7-4 翻译布尔表达式-A

大家都学过了布尔表达式的翻译,其中有一个拉链-回填技术,这次我们就练习这个技术。 注意,在布尔表达式中,“并且”运算的优先级是要高于“或者”运算的。 输入格式: 输入为一行字符串,例如: a < b or c < d and e < f 每个符号都用空格间隔。 其中逻辑运算符包含 and 和 or , 关系运算符包含 < 、> 、<= 、 >= 、== 、...

ArtinCode 1644

[编译原理]表达式语法分析——递归子程序法(Python & C++)

表达式语法分析——递归子程序法 Time Limit: 1000 ms Memory Limit: 65536 KiB Problem Description 递归子程序法是一种确定的自顶向下语法分析方法,要求文法是LL(1)文法。它的实现思想是对应文法中每个非终结符编写一个递归过程,每个过程的功能是识别由该非终结符推出的串,当某非终结符的产生式有多个候选式时能够按LL(1)形式唯一地确定选择某个...

ArtinCode 1273

递归子程序

#include<bits/stdc++.h> using namespace std; string s; int N=0; int cur =0; void E(); void T(); void G(); void F(); void S(); int main(){ cin>>s; if(s[cur]!='i'&&s[cur]!='...

ArtinCode 605
上一篇: [算法设计]代码复习笔记
下一篇: [编译原理]7-4 翻译布尔表达式-A
ArtinCode
博客等级 码龄9年 23粉丝 49原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值