⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ada.l

📁 现将本人搜集常用的程序设计语言的词法和形式文法提供给大家。其中
💻 L
字号:
%{
#include "y.tab.h"

extern int yylineno;
extern void exit();

static int last_token;
%}

A	[a-zA-Z]
D	[0-9]
H	[a-fA-F0-9]
E	[Ee][+-]?{D}(_?{D})*

%%

"&"	{ last_token = '&'; return '&'; }
"("	{ last_token = '('; return '('; }
")"	{ last_token = ')'; return ')'; }
"*"	{ last_token = '*'; return '*'; }
"+"	{ last_token = '+'; return '+'; }
","	{ last_token = ','; return ','; }
"-"	{ last_token = '-'; return '-'; }
"."	{ last_token = '.'; return '.'; }
"/"	{ last_token = '/'; return '/'; }
":"	{ last_token = ':'; return ':'; }
";"	{ last_token = ';'; return ';'; }
"<"	{ last_token = '<'; return '<'; }
"="	{ last_token = '='; return '='; }
">"	{ last_token = '>'; return '>'; }
"!"	|                                    /* alternate character */
"|"	{ last_token = '|'; return '|'; }

"**"	{ last_token = EXP_; return EXP_; }
".."	{ last_token = DBLDOT_; return DBLDOT_; }
"/="	{ last_token = NOTEQL_; return NOTEQL_; }
":="	{ last_token = ASSIGN_; return ASSIGN_; }
"<<"	{ last_token = L_LBL_; return L_LBL_; }
"<="	{ last_token = LTEQ_; return LTEQ_; }
"<>"	{ last_token = BOX_; return BOX_; }
"=>"	{ last_token = ARROW_; return ARROW_; }
">="	{ last_token = GTEQL_; return GTEQL_; }
">>"	{ last_token = R_LBL_; return R_LBL_; }

"'"	{
  /* is it an attribute tic? */
  switch ( last_token ) {
    case ')' :
    case ALL_ :
    case identifier :
    case string_literal :
    case character_literal :
      last_token = '\'';
      return '\'';
    default :
      ;
  }

  /* must be a character literal */
  {
    int c = input();

    if ( c != '\n' ) {
      c = input();

      if ( c == '\'' ) {
        last_token = character_literal;
        return character_literal;
      } else {
        fprintf( stderr,
                 "malformed character literal on line %d\n",
                 ( c != '\n' ) ? yylineno : --yylineno );

        exit( 1 );
      }
    } else {
      fprintf( stderr, "malformed character literal on line %d\n", --yylineno );

      exit( 1 );
    }
  }
}

{A}(_?({A}|{D}))*	{
  extern char yytext[];
  extern int reserved_word();

  last_token = reserved_word( yytext );
  return last_token;
}

{D}(_?{D})*([.]{D}(_?{D})*)?({E})?		|
{D}(_?{D})*:{H}(_?{H})*([.]{H}(_?{H})*)?:({E})?	|     /* alternate character */
{D}(_?{D})*#{H}(_?{H})*([.]{H}(_?{H})*)?#({E})?	{
  last_token = numeric_literal;
  return numeric_literal;
}

\%([^%"]|\%\%)*\%	|     /* alternate character */
\"([^"]|\"\")*\"	{
  last_token = string_literal;
  return string_literal;
}

"--".*		;
[ \f\n\r\t\v]	;

.	{
  fprintf( stderr, "illegal character on line %d\n", yylineno );

  exit( 1 );
}

⌨️ 快捷键说明

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