新建 文本文档 (2).txt

来自「编译器,一个小型语言的词法分析器.完成词法分析等功能,识别出一个个单词.」· 文本 代码 · 共 60 行

TXT
60
字号
//FILE:tiny.1
%{
  #include "globals.h"
  #include"util.h"
  #include"scan.h'
  char token string[MAXLEN+1];
  %}
digit      [0-9]
number     {digit}+
letter     [a-zA-Z]
identifier {letter|number}+
newline    \n
whitespace  [\t]+
%%
"IF"      {return  IF;}
"then"    {return  THEN;}
"else"    {return  ELSE;}
"end"     {return  END;}
"repeat"  {return  REPEAT;}
"until"   {return  UNTIL;}
"read"     {return READ;}
"write"    {return   WRITE;}

":="         {return  ASSIGN;}
"="          {return  EQ;}
"<"          {return  LT;}
"+"         {return  PLUS;}
"*"         {return TIMES;}
"-"        {return MINUS;}
";"         {return SEMI;}
"("         {return  LPAREN;}
")"         {return  RPAREN;}
{number} {return   NUM;}
{identifier} {return   ID;}
{newline}   {lineno++}
{whitespace} {/*skip whitespace*/}
"{          {char c;
             do
             {c=input();
              if(c=='\n') lineno++;
             }while(c!='}');
          }
          {return ERROR;}
%%
Token Type get Token(void)
{ static int firstTime=TRUE;
  TokenType  currentToken;
  if(firstTime)
  {firstTime=FALSE;
  lineno++;
  yyin=source;
  yyout=listing;}
  currentToken=yylex();
  strncpy(tlkenString,yytex,MAXLEN);
  if(TraceScan){
  fprintf{  listing,"\t%d:",lineno);
  printToken(currentToken,takenString);
  }
return currentToken;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?