📄 scan.l
字号:
%{#include <stdio.h>#include "y.tab.h"void count();void prword();int stack[200];int size = 0;%}digit [0-9]+float [+-]?[0-9]*\.[0-9]+([eE][+-]?[0-9]+)? id [a-zA-Z][a-zA-Z0-9]*math >|>=|==|<>|<|<=%%program {count();return PROGRAM;}begins {count();return BEGINS;}end {count();return END;}const {count();return CONST;}";" {count();return ';';}boolean {count();return BOOLEAN;}true {count();return TRUE;}false {count();return FALSE;}int {count();return INT;}float {count();return FLOAT;}array {count();return ARRAY;}"[" {count();return '[';}"]" {count();return ']';}"," {count();return ',';}":=" {count();return ASSIGN;}"(" {count();return '(';}")" {count();return ')';}"=" {count();return '=';}if {count();return IF;}then {count();return THEN;}else {count();return ELSE;}while {count();return WHILE;}do {count();return DO;}repeat {count();return REPEAT;}until {count();return UNTIL;}for {count();return FOR;}to {count();return TO;}read {count();return READ;}write {count();return WRITE;}return {count();return RETURN;}"+" {count();return '+';}"-" {count();return '-';}"*" {count();return '*';}"/" {count();return '/';}{math} {count();return MATH;}and {count();return AND;}or {count();return OR;}not {count();return NOT;}{digit} {count();return ICON;}{float} {count();return FCON;}{id} {count();return ID;}":" {count();return ':';}[ \t\v\n\f] { count(); }. %%yywrap(){ return(1);}comment(){ char c, c1;loop: while ((c = input()) != '*' && c != 0) putchar(c); if ((c1 = input()) != '/' && c != 0) { unput(c1); goto loop; } if (c != 0) putchar(c1);}int column = 0;void count(){ int i; for (i = 0; yytext[i] != '\0'; i++) if (yytext[i] == '\n') column = 0; else if (yytext[i] == '\t') column += 8 - (column % 8); else column++; ECHO;}void prword(int wd){ switch(wd) { case 201:printf("program ");break; case 202:printf("begins ");break; case 203:printf("end ");break; case 204:printf("const ");break; case 205:printf("; ");break; case 206:printf("boolean ");break; case 207:printf("true ");break; case 208:printf("flase ");break; case 209:printf("int ");break; case 210:printf("float");break; case 211:printf("array ");break; case 212:printf("[ ");break; case 213:printf("] ");break; case 214:printf(", ");break; case 215:printf(":= ");break; case 216:printf("( ");break; case 217:printf(") ");break; case 218:printf("= ");break; case 219:printf("if ");break; case 220:printf("then ");break; case 221:printf("else ");break; case 222:printf("while ");break; case 223:printf("do ");break; case 224:printf("repeat ");break; case 225:printf("until ");break; case 226:printf("for ");break; case 227:printf("to ");break; case 228:printf("read ");break; case 229:printf("write ");break; case 230:printf("return ");break; case 231:printf("+ ");break; case 232:printf("- ");break; case 233:printf("* ");break; case 234:printf("/ ");break; case 235:printf("math ");break; case 236:printf("and ");break; case 237:printf("or ");break; case 238:printf("not ");break; case 239:printf("icon ");break; case 240:printf("fcon ");break; case 241:printf("id ");break; case 242:printf(": ");break; case 243:printf("declaration ");break; case 244:printf("condef ");break; case 245:printf("constv ");break; case 246:printf("vardec ");break; case 247:printf("type ");break; case 248:printf("idtable ");break; case 249:printf("arraytable ");break; case 250:printf("dimension ");break; case 251:printf("funcdec ");break; case 252:printf("procdec ");break; case 253:printf("funcdef ");break; case 254:printf("procdef ");break; case 255:printf("parat ");break; case 256:printf("sentences ");break; case 257:printf("sentence ");break; case 258:printf("vartable ");break; case 259:printf("exptable ");break; case 260:printf("exp ");break; case 261:printf("var ");break; case 262:printf("func ");break; case 263:printf("procc ");break; case 264:printf("para ");break; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -