#include "stdio.h" #include "string.h" #define ACC -2 #define sy_if 0 #define sy_then 1 #define sy_else 2 #define sy_while 3 #define sy_begin 4 ...../宏定义/ char ch='\0'; int count=0; static char spelling[10]={""}; static char line[81]={""}; char *pline; static char ntab1[10][10]; struct rwords { char sp[10]; int sy; }; struct rwords reswords[10]={{"if",sy_if}, {"do",sy_do},{"esle",sy_else},{"while",sy_while},{"then",sy_then}, {"begin",sy_begin},{"end",sy_end},{"and",op_and},{"or",op_or} ,{"not",op_not}}; struct aa { int sy1; int pos; }buf[100]; int ssp=0; int tt1=0; int lnum=0; FILE *cfile; int nlength=0; struct aa *pbuf=buf; /****************************/ readline()/读入行 { ………… } *pline='\0'; pline=line;} /****************************/ readch()/读入字符 …… } ch=*pline; pline++; } /********************************/ find(char spel[])/查找 {...... } identifier()/标识符识别 { ........ } /*************************/ number()/常数识别 {.......} scan()/扫描程序 {while(ch!='~') {switch(ch) {case ' ': break; case 'a': case 'b': ...... case 'z': identifier();break; case '0': case '1': ....... case '9': number();break; case '<':readch();if(ch=='=') {buf[count].pos=0;} else{if(ch=='>')buf[count].pos=4; else{buf[count].pos=1;pline--;}} buf[count].sy1=rop; count++;break; case '>':readch();if(ch=='='){buf[count].pos=2;} else{buf[count].pos=3;pline--;} buf[count].sy1=rop; count++;break; case '(': buf[count].sy1=lparent;count++;break; case ')':buf[count].sy1=rparent;count++;break; case '#':buf[count].sy1=jinhao;count++;break; case '+':buf[count].sy1=plus;count++;break; case '*':buf[count].sy1=times;count++;break; case ':':readch();if(ch=='=')buf[count].sy1=becomes; count++;break; case '=':buf[count].sy1=rop;buf[count].pos=5;count++;break; case ';':buf[count].sy1=semicolon;count++;break; } readch(); }buf[count].sy1=-1; }/***********************/ disp1()/输出 {.... } disp2() {....../输出 } main() { if((cfile=fopen("PAS.C","r"))==NULL) {printf("file not open\n");exit(0);} readch(); scan(); disp1(); disp2();
时间: 2023-07-23 19:06:48 浏览: 146
这段代码是一个简单的词法分析器,可以用于识别 Pascal 语言的单词和符号,并输出它们的种类和位置。其中,readline() 和 readch() 用于读入一行和一个字符,identifier() 和 number() 用于识别标识符和常数,find() 用于查找保留字,scan() 用于扫描整个程序并进行词法分析,disp1() 和 disp2() 用于输出结果。这段代码中使用了一些宏定义和结构体来简化代码。
相关问题
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <stdint.h> #define SHA1_BLOCK_SIZE 20 #define SHA1_DIGEST_SIZE 5
SHA-1是一种密码散列函数,用于产生消息的数字指纹。SHA-1算法的输出长度为160位,即20个字节。在C语言中,可以使用以下代码来实现SHA-1算法:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
#define SHA1_BLOCK_SIZE 20
#define SHA1_DIGEST_SIZE 5
void sha1(const uint8_t *message, size_t message_len, uint8_t *digest) {
// TODO: 实现SHA-1算法
}
int main() {
uint8_t message[] = "hello world";
uint8_t digest[SHA1_DIGEST_SIZE];
sha1(message, strlen((char *)message), digest);
printf("SHA-1 digest: ");
for (int i = 0; i < SHA1_DIGEST_SIZE; i++) {
printf("%02x", digest[i]);
}
printf("\n");
return 0;
}
```
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <malloc.h> #define MAXV 1000 #define ElemType int #define INF 32767
这是一个 C 语言的头文件和宏定义,其中:
- `<stdio.h>` 是标准输入输出头文件。
- `<stdlib.h>` 是标准库头文件。
- `<string.h>` 是字符串操作头文件。
- `<malloc.h>` 是动态内存分配头文件。
- `MAXV` 定义了最大顶点数为 1000。
- `ElemType` 定义了元素类型为 int。
- `INF` 定义了一个较大的数值,用于表示无穷大。
阅读全文