• 编译原理随堂作业五—词法分析程序的设计与实现


    词法分析程序(Lexical Analyzer)要求:

    - 从左至右扫描构成源程序的字符流

    -  识别出有词法意义的单词(Lexemes

    -  返回单词记录(单词类别,单词本身)

    -  滤掉空格

    -  跳过注释

    -  发现词法错误

    程序结构:

    输入:字符流(什么输入方式,什么数据结构保存)

    处理:

    –遍历(什么遍历方式)

    –词法规则

    输出:单词流(什么输出形式)

    –二元组

    单词类别:

    1.标识符(10)

    2.无符号数(11)

    3.保留字(一词一码)

    4.运算符(一词一码)

    5.界符(一词一码)

    单词符号

    种别码

    单词符号

    种别码

    begin

    1

    :

    17

    if

    2

    :=

    18

    then

    3

    <

    20

    while

    4

    <=

    21

    do

    5

    <>

    22

    end

    6

    >

    23

    l(l|d)*

    10

    >=

    24

    dd*

    11

    =

    25

    +

    13

    ;

    26

    -

    14

    (

    27

    *

    15

    )

    28

    /

    16

    #

    0

    自己当前还没写好,具体框架也还不完善,只能先给出一些残次代码了....

    词组存储数据结构:

    struct words{
        char word[500];
        char iword[500];
        char identifier[500];
        char num[500];
    };

    词组分析函数(未完成):

    int WordsAnalysis(char* sen,int n){
        char temp;
        char str[30];
        int len=0;
        printf("%s
    ",sen);
        for(int i=0;i<=n;i++){
            len=0;
            if(sen[i]==' '){
                continue;
            }
                
            if(sen[i]>='A'&&sen[i]<='z'){
                while(isWord(sen[i])){
                    temp=sen[i];
                    str[len]=sen[i];
                    len++;
                    i++;
                    
                }
                
            };
        };
        
        printf(str);
        return 0;
    };

    本来想通过扫描到一个一个字符后以字符后第一个空格为界,将扫描到的字符组合成字符并将其存储,但自己卡在字符的拼接上....

    在这过程中也在参考下面这篇博文,尚在学习中!

    https://blog.csdn.net/sinat_37341950/article/details/79565485

  • 相关阅读:
    codeforces 814B An express train to reveries
    codeforces 814A An abandoned sentiment from past
    codeforces 785D D. Anton and School
    codeforces 785C Anton and Fairy Tale
    codeforces 791C Bear and Different Names
    AOP详解
    Spring集成JUnit测试
    Spring整合web开发
    IOC装配Bean(注解方式)
    IOC装配Bean(XML方式)
  • 原文地址:https://www.cnblogs.com/xiaoAP/p/11656941.html
Copyright © 2020-2023  润新知