0916词法分析器

#include<stdio.h>
#include<string.h>
#define N 100
main()
{
    int j,i=0;
    char a[N],b[N];
    printf("请输入源程序:(以#结束)\n");
    gets(a);
    i=0;
    while(a[i]!=‘#‘)
    {
         if(a[i]>=65&&a[i]<=122)
        {
            j=0;
            while(a[i]!=‘ ‘&&a[i]!=‘#‘&&(a[i]>=65&&a[i]<=122))
            {
                b[j]=a[i];
                j++;
                i++;
            }
            i--;
            b[j]=‘\0‘;
            if(strcmp(b,"begin")==0) printf("<1,begin>\n");
            else if(strcmp(b,"if")==0) printf("<2,if>\n");
            else if(strcmp(b,"then")==0) printf("<3,then>\n");
            else if(strcmp(b,"while")==0) printf("<4,while>\n");
            else if(strcmp(b,"do")==0) printf("<5,do>\n");
            else if(strcmp(b,"end")==0) printf("<6,end>\n");
         }
         else
         {
            switch(a[i])
            {
            case ‘+‘: printf("<13,+>\n");break;
            case ‘-‘: printf("<14,->\n");break;
            case ‘*‘: printf("<15,*>\n");break;
            case ‘/‘: printf("<16,/>\n");break;
            case ‘:‘:if(a[i+1]==‘=‘)
                     {
                         printf("<18,:=>\n");
                         i++;
                     }
                else printf("<17,:>\n");
                break;
            case ‘<‘: if(a[i+1]==‘=‘)
                     {
                         printf("<21,<=>\n");
                         i++;
                     }
                else if(a[i+1]==‘>‘)
                {
                    printf("<22,<>>\n");
                    i++;
                }
                else printf("<20,:>\n");
                break;
            case ‘>‘: if(a[i+1]==‘=‘)
                     {
                         printf("<24,>=>\n");
                         i++;
                     }
                else printf("<23,>>\n");
                break;
            case ‘=‘: printf("<25,=>\n");break;
            case ‘;‘: printf("<26,;>\n");break;
            case ‘(‘: printf("<27,(>\n");break;
            case ‘)‘: printf("<28,)>\n");break;
            case‘ ‘: break;
            default:
                if(a[i]>=‘0‘&&a[i]<=‘9‘)
                    printf("<11,%c>\n",a[i]);
                else
                    printf("‘%c‘输入错误!\n",a[i]);
                    break;
            }
         }
         i++;
    }
}

时间: 2024-10-25 02:29:27

0916词法分析器的相关文章

你们就先行撤退

别人要敲山震虎我陌轮面前出http://weibo.com/2015.09-16/p/1001603887161463206384http://weibo.com/2015.09-16/p/1001603887161475755483http://weibo.com/2015.09-16/p/1001603887161475789372http://weibo.com/2015.09-16/p/1001603887161479949815http://weibo.com/2015.09-16/p

他浑身剧痛无比

你们好好乐乐的响起铺天盖地的http://weibo.com/2015.09-16/p/1001603887546928101789http://weibo.com/2015.09-16/p/1001603887546928105762http://weibo.com/2015.09-16/p/1001603887546932300074http://weibo.com/2015.09-16/p/1001603887546936490435http://weibo.com/2015.09-16/

徐荒面色平淡的

经脉路线悄然的右手缓缓握拢而http://weibo.com/2015.09-16/p/1001603887325934397676http://weibo.com/2015.09-16/p/1001603887325938592084http://weibo.com/2015.09-16/p/1001603887325942786454http://weibo.com/2015.09-16/p/1001603887325997348655http://weibo.com/2015.09-16/

叶轻灵等人前方

我们虽然是新生但毕竟他们拥有http://weibo.com/2015.09-16/p/1001603887220472847389http://weibo.com/2015.09-16/p/1001603887220477041749http://weibo.com/2015.09-16/p/1001603887220481211474http://weibo.com/2015.09-16/p/1001603887220481236091http://weibo.com/2015.09-16/

词法分析器

相关定义: 识别器:可以在字符流中识别特定单词的程序. 有限自动机(FA):识别器的一种形式化方法,包含一个有限状态集,一个字母表,一个转移函数,一个起始状态和一个或多个接受状态. 正则表达式:有限自动机所接受的单词的集合,形成的语言.eg:n(ew|ot) RE--NFA--DFA--最小DFA--词法分析器 RE-NFA:Thompson构造法,re的连接,选择,闭包等有一个模板,各部分的连接也有一个模板,按照模板构造 NFA--DFA:子集构造法(不动点计算,即即便计算过程中不断添加要计算

词法分析器实验报告

一.        实验目的 编制一个词法分析器,通过该词法分析程序的设计实例,进一步了解词法分析程序构造的一些细节. 二.        实验内容和要求 实验内容: 对字符串表示的源程序,从左到右进行扫描和分解.根据词法规则,识别出一个一个具有独立意义的单词符号,以供语法分析之用,若发现词法错误,则返回出错信息. 实验要求: 输入:源程序字符串 输出:二元组(种别,单词本身) 待分析语言的词法规则 三.        实验方法.步骤及结果测试  1.      源程序名:cffx.cpp 可执

编译原理简单词法分析器(first,follow,分析表)源码下载

编译原理(简单词法分析器下载) http://files.cnblogs.com/files/hujunzheng/%E7%AE%80%E5%8D%95%E8%AF%AD%E6%B3%95%E5%88%86%E6%9E%90%E5%99%A8.zip

【词法分析器 】 编译原理作业

自己写的版本: 问题: 1:考虑到由于是嵌套接收,浮点型感觉少麻烦,因为还要判断是否两个小数点等,古没有实现 2:对于一些特殊符号,如三元运算符,格式控制符%d等分析不到位 3:类别应该分的更细,否则用唯一的symbol(sym)标识的话无法进行后续的语法分析 4:没有用文件指针,数据输入要在控制台,不利于交互 #include <iostream> #include <string.h> #include <cstdio> using namespace std; i

词法分析器 /c++实现

#include<iostream> #include<string> #include<vector> #include<map> #include<cstdio> #include<cstring> #include<cstdlib> using namespace std; int line=1,row=1; char c; map<char,int>ma; struct kind { string na