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

📄 ada语法.c

📁 语言的语法,格式严紧,对于处理yacc,lex有帮助!
💻 C
📖 第 1 页 / 共 3 页
字号:
发信人: InfoMagic (好好学习 天天向上), 信区: PUE 

标  题: ada 语法 

发信站: 武汉白云黄鹤站 (2001年05月23日22:54:23 星期三), 站内信件 

  

#! /bin/sh 

# This is a shell archive.  Remove anything before this line, then unpack 

# it by saving it into a file and typing "sh file".  To overwrite existing 

# files, type "sh file -c".  You can also feed this as standard input via 

# unshar, or by typing "sh <file", e.g..  If this archive is complete, you 

# will see the following message at the end: 

#  "End of shell archive." 

# Contents:  Makefile ada.l ada.y main.c rw.c yyerror.c 

# Wrapped by marshall@angora on Sun May  6 09:35:24 1990 

PATH=/bin:/usr/bin:/usr/ucb ; export PATH 

if test -f 'Makefile' -a "${1}" != "-c" ; then 

  echo shar: Will not clobber existing file \"'Makefile'\" 

else 

echo shar: Extracting \"'Makefile'\" \(396 characters\) 

sed "s/^X//" >'Makefile' <<'END_OF_FILE' 

XOBJS = \ 

X y.tab.o \ 

X main.o \ 

X rw.o \ 

X yyerror.o 

X 

XCFLAGS = -g 

X 

X.c.o: 

X cc -c $(CFLAGS) $*.c 

X 

Xall: ada_syntax 

X 

Xada_syntax: $(OBJS) 

X cc -o ada_syntax $(CFLAGS) $(OBJS) -ll 

X 

Xclean: 

X rm -f lex.yy.c lex.yy.o y.tab.c y.tab.h yacc.acts yacc.tmp 

X rm -f ada_syntax $(OBJS) core 

X 

Xlex.yy.c: ada.l 

X lex ada.l 

X 

Xy.tab.h: ada.y 

X yacc -d ada.y 

Xy.tab.o: lex.yy.c y.tab.h 

X cc -w -c $(CFLAGS) y.tab.c 

X 

Xrw.o: y.tab.h 

END_OF_FILE 

if test 396 -ne `wc -c <'Makefile'`; then 

    echo shar: \"'Makefile'\" unpacked with wrong size! 

fi 

# end of 'Makefile' 

fi 

if test -f 'ada.l' -a "${1}" != "-c" ; then 

  echo shar: Will not clobber existing file \"'ada.l'\" 

else 

echo shar: Extracting \"'ada.l'\" \(2605 characters\) 

sed "s/^X//" >'ada.l' <<'END_OF_FILE' 

X%{ 

X#include "y.tab.h" 

X 

Xextern int yylineno; 

Xextern void exit(); 

X 

Xstatic int last_token; 

X%} 

X 

XA [a-zA-Z] 

XD [0-9] 

XH [a-fA-F0-9] 

XE [Ee][+-]?{D}(_?{D})* 

X 

X%% 

X 

X"&" { last_token = '&'; return '&'; } 

X"(" { last_token = '('; return '('; } 

X")" { last_token = ')'; return ')'; } 

X"*" { last_token = '*'; return '*'; } 

X"+" { last_token = '+'; return '+'; } 

X"," { last_token = ','; return ','; } 

X"-" { last_token = '-'; return '-'; } 

X"." { last_token = '.'; return '.'; } 

X"/" { last_token = '/'; return '/'; } 

X":" { last_token = ':'; return ':'; } 

X";" { last_token = ';'; return ';'; } 

X"<" { last_token = '<'; return '<'; } 

X"=" { last_token = '='; return '='; } 

X">" { last_token = '>'; return '>'; } 

X"!" |                                    /* alternate character */ 

X"|" { last_token = '|'; return '|'; } 

X 

X"**" { last_token = EXP_; return EXP_; } 

X".." { last_token = DBLDOT_; return DBLDOT_; } 

X"/=" { last_token = NOTEQL_; return NOTEQL_; } 

X":=" { last_token = ASSIGN_; return ASSIGN_; } 

X"<<" { last_token = L_LBL_; return L_LBL_; } 

X"<=" { last_token = LTEQ_; return LTEQ_; } 

X"<>" { last_token = BOX_; return BOX_; } 

X"=>" { last_token = ARROW_; return ARROW_; } 

X">=" { last_token = GTEQL_; return GTEQL_; } 

X">>" { last_token = R_LBL_; return R_LBL_; } 

X 

X"'" { 

X  /* is it an attribute tic? */ 

X  switch ( last_token ) { 

X    case ')' : 

X    case ALL_ : 

X    case identifier : 

X    case string_literal : 

X    case character_literal : 

X      last_token = '\''; 

X      return '\''; 

X    default : 

X      ; 

X  } 

X 

X  /* must be a character literal */ 

X  { 

X    int c = input(); 

X 

X    if ( c != '\n' ) { 

X      c = input(); 

X 

X      if ( c == '\'' ) { 

X        last_token = character_literal; 

X        return character_literal; 

X      } else { 

X        fprintf( stderr, 

X                 "malformed character literal on line %d\n", 

X                 ( c != '\n' ) ? yylineno : --yylineno ); 

X 

X        exit( 1 ); 

X      } 

X    } else { 

X      fprintf( stderr, "malformed character literal on line %d\n", --yyline 

no ); 

X 

X      exit( 1 ); 

X    } 

X  } 

X} 

X 

X{A}(_?({A}|{D}))* { 

X  extern char yytext[]; 

X  extern int reserved_word(); 

X 

X  last_token = reserved_word( yytext ); 

X  return last_token; 

X} 

X 

X{D}(_?{D})*([.]{D}(_?{D})*)?({E})?  | 

X{D}(_?{D})*:{H}(_?{H})*([.]{H}(_?{H})*)?:({E})? |     /* alternate characte 

r */ 

X{D}(_?{D})*#{H}(_?{H})*([.]{H}(_?{H})*)?#({E})? { 

X  last_token = numeric_literal; 

X  return numeric_literal; 

X} 

X 

X\%([^%"]|\%\%)*\% |     /* alternate character */ 

X\"([^"]|\"\")*\" { 

X  last_token = string_literal; 

X  return string_literal; 

X} 

X 

X"--".*  ; 

X[ \f\n\r\t\v] ; 

X 

X. { 

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

X 

X  exit( 1 ); 

X} 

END_OF_FILE 

if test 2605 -ne `wc -c <'ada.l'`; then 

    echo shar: \"'ada.l'\" unpacked with wrong size! 

fi 

# end of 'ada.l' 

fi 

if test -f 'ada.y' -a "${1}" != "-c" ; then 

  echo shar: Will not clobber existing file \"'ada.y'\" 

else 

echo shar: Extracting \"'ada.y'\" \(19965 characters\) 

sed "s/^X//" >'ada.y' <<'END_OF_FILE' 

X%{ 

X#include "lex.yy.c" 

X%} 

X 

X%token ABORT_ ABS_ ACCEPT_ ACCESS_ ALL_ AND_ ARRAY_ AT_ 

X%token BEGIN_ BODY_ 

X%token CASE_ CONSTANT_ 

X%token DECLARE_ DELAY_ DELTA_ DIGITS_ DO_ 

X%token ELSE_ ELSIF_ END_ ENTRY_ EXCEPTION_ EXIT_ 

X%token FOR_ FUNCTION_ 

X%token GENERIC_ GOTO_ 

X%token IF_ IN_ IS_ 

X%token LIMITED_ LOOP_ 

X%token MOD_ 

X%token NEW_ NOT_ NULL_ 

X%token OF_ OR_ OTHERS_ OUT_ 

X%token PACKAGE_ PRAGMA_ PRIVATE_ PROCEDURE_ 

X%token RAISE_ RANGE_ RECORD_ REM_ RENAMES_ RETURN_ REVERSE_ 

X%token SELECT_ SEPARATE_ SUBTYPE_ 

X%token TASK_ TERMINATE_ THEN_ TYPE_ 

X%token USE_ 

X%token WHEN_ WHILE_ WITH_ 

X%token XOR_ 

X 

X%token identifier numeric_literal string_literal character_literal 

X%token ARROW_ DBLDOT_ EXP_ ASSIGN_ NOTEQL_ GTEQL_ LTEQ_ L_LBL_ R_LBL_ BOX_ 

X 

X%start compilation 

X 

X%% 

X/* 2.8 */ 

Xprag : PRAGMA_ identifier .arg_ascs ';'; 

X 

Xarg_asc : 

X expr | 

X identifier ARROW_ expr; 

X 

X 

X/* 3.1 */ 

Xbasic_d : 

X object_d | 

X ty_d | 

X subty_d | 

X subprg_d | 

X pkg_d | 

X task_d | 

X gen_d | 

X excptn_d | 

X gen_inst | 

X renaming_d | 

X number_d | 

X error ';'; 

X 

X 

X/* 3.2 */ 

Xobject_d : 

X idents ':' subty_ind ._ASN_expr. ';' | 

X idents ':' CONSTANT_ subty_ind ._ASN_expr. ';' | 

X idents ':' c_arr_def ._ASN_expr. ';' | 

X idents ':' CONSTANT_ c_arr_def ._ASN_expr. ';'; 

X 

Xnumber_d : idents ':' CONSTANT_ ASSIGN_ expr ';'; 

X 

Xidents : identifier ...ident..; 

X 

X 

X/* 3.3.1 */ 

Xty_d : 

X full_ty_d | 

X incomplete_ty_d | 

X priv_ty_d; 

X 

Xfull_ty_d : 

X TYPE_ identifier IS_ ty_def ';' | 

X TYPE_ identifier discr_part IS_ ty_def ';'; 

X 

Xty_def : 

X enum_ty_def | 

X integer_ty_def | 

X real_ty_def | 

X array_ty_def | 

X rec_ty_def | 

X access_ty_def | 

X derived_ty_def; 

X 

X 

X/* 3.3.2 */ 

Xsubty_d : SUBTYPE_ identifier IS_ subty_ind ';'; 

X 

Xsubty_ind : ty_mk .constrt.; 

X 

Xty_mk : expanded_n; 

X 

Xconstrt : 

X rng_c | 

X fltg_point_c | 

X fixed_point_c | 

X aggr; 

X 

X 

X/* 3.4 */ 

Xderived_ty_def : NEW_ subty_ind; 

X 

X 

X/* 3.5 */ 

Xrng_c : RANGE_ rng; 

X 

Xrng : 

X name | 

X sim_expr DBLDOT_ sim_expr; 

X 

X 

X/* 3.5.1 */ 

Xenum_ty_def : '(' enum_lit_spec ...enum_lit_spec.. ')'; 

X 

Xenum_lit_spec : enum_lit; 

X 

Xenum_lit : 

X identifier | 

X character_literal; 

X 

X 

X/* 3.5.4 */ 

Xinteger_ty_def : rng_c; 

X 

X 

X/* 3.5.6 */ 

Xreal_ty_def : 

X fltg_point_c | 

X fixed_point_c; 

X 

X 

X/* 3.5.7 */ 

Xfltg_point_c : fltg_accuracy_def .rng_c.; 

X 

Xfltg_accuracy_def : DIGITS_ sim_expr; 

X 

X 

X/* 3.5.9 */ 

Xfixed_point_c : fixed_accuracy_def .rng_c.; 

X 

Xfixed_accuracy_def : DELTA_ sim_expr; 

X 

X 

X/* 3.6 */ 

Xarray_ty_def : 

X uncnstrnd_array_def | 

X c_arr_def; 

X 

Xuncnstrnd_array_def : ARRAY_ '(' idx_subty_def ...idx_subty_def.. ')' OF_ s 

ubty_ind; 

X 

Xc_arr_def : ARRAY_ idx_c OF_ subty_ind; 

X 

Xidx_subty_def : name RANGE_ BOX_; 

X 

Xidx_c : '(' dscr_rng ...dscr_rng.. ')'; 

X 

Xdscr_rng : 

X rng | 

X name rng_c; 

X 

X 

X/* 3.7 */ 

Xrec_ty_def : 

X RECORD_ 

X   cmpons 

X END_ RECORD_; 

X 

Xcmpons : 

X ..prag.. ..cmpon_d.. cmpon_d ..prag.. | 

X ..prag.. ..cmpon_d.. variant_part ..prag.. | 

X ..prag.. NULL_ ';' ..prag..; 

X 

Xcmpon_d : idents ':' cmpon_subty_def ._ASN_expr. ';'; 

X 

Xcmpon_subty_def : subty_ind; 

X 

X 

X/* 3.7.1 */ 

Xdiscr_part : '(' discr_spec ...discr_spec.. ')'; 

X 

Xdiscr_spec : idents ':' ty_mk ._ASN_expr.; 

X 

X 

X/* 3.7.2 */ 

X 

X/* 

X * included under aggr 

X * 

X * discr_c : '(' discr_asc ... discr_asc.. ')'; 

X * discr_asc : .discr_sim_n ..or_discrim_sim_n.. ARROW. expression; 

X */ 

X 

X/* 3.7.3 */ 

Xvariant_part : 

X CASE_ sim_n IS_ 

X   ..prag.. variant ..variant.. 

X END_ CASE_ ';'; 

X 

Xvariant : 

X WHEN_ choice ..or_choice.. ARROW_ 

X   cmpons; 

X 

Xchoice : 

X sim_expr | 

X name rng_c | 

X sim_expr DBLDOT_ sim_expr | 

X OTHERS_; 

X 

X 

X/* 3.8 */ 

Xaccess_ty_def : ACCESS_ subty_ind; 

X 

X 

X/* 3.8.1 */ 

Xincomplete_ty_d : 

X TYPE_ identifier ';' | 

X TYPE_ identifier discr_part ';'; 

X 

X 

X/* 3.9 */ 

Xdecl_part : 

X ..basic_decl_item.. | 

X ..basic_decl_item.. body ..later_decl_item..; 

X 

Xbasic_decl_item : 

X basic_d | 

X rep_cl | 

X use_cl; 

X 

Xlater_decl_item : 

X body | 

X subprg_d | 

X pkg_d | 

X task_d | 

X gen_d | 

X use_cl | 

X gen_inst; 

X 

Xbody : 

X proper_body | 

X body_stub; 

X 

Xproper_body : 

X subprg_body | 

X pkg_body | 

X task_body; 

X 

X 

X/* 4.1 */ 

Xname : 

X sim_n | 

X character_literal | 

X op_symbol | 

X idxed_cmpon | 

X selected_cmpon | 

X attribute; 

X 

Xsim_n : identifier; 

X 

Xprefix : name; 

X 

X 

X/* 4.1.1 */ 

Xidxed_cmpon : prefix aggr; 

X 

X 

X/* 4.1.2 */ 

X 

X/* 

X * included under idxed_cmpon 

X * 

X * slice : prefix '(' dscr_rng ')'; 

X */ 

X 

X 

X/* 4.1.3 */ 

Xselected_cmpon : prefix '.' selector; 

X 

Xselector : 

X sim_n | 

X character_literal | 

X op_symbol | 

X ALL_; 

X 

X 

X/* 4.1.4 */ 

X/* prefix can be an attribute, idxed cmpon, slice, or subprg call. */ 

Xattribute : prefix '\'' attribute_designator; 

X 

Xattribute_designator : 

X sim_n | 

X DIGITS_ | 

X DELTA_ | 

X RANGE_; 

X 

X 

X/* 4.3 */ 

Xaggr : '(' cmpon_asc ...cmpon_asc.. ')'; 

X 

Xcmpon_asc : 

X expr | 

X choice ..or_choice.. ARROW_ expr | 

X sim_expr DBLDOT_ sim_expr | 

X name rng_c; 

X 

X 

X/* 4.4 */ 

Xexpr : 

X rel..AND__rel.. | 

X rel..AND__THEN__rel.. | 

X rel..OR__rel.. | 

X rel..OR__ELSE__rel.. | 

X rel..XOR__rel..; 

X 

Xrel : 

X sim_expr .relal_op__sim_expr. | 

X sim_expr.NOT.IN__rng_or_sim_expr.NOT.IN__ty_mk; 

X 

Xsim_expr : .unary_add_op.term..binary_add_op__term..; 

X 

Xterm : factor..mult_op__factor..; 

X 

Xfactor : 

X pri ._EXP___pri. | 

X ABS_ pri | 

X NOT_ pri; 

X 

Xpri : 

X numeric_literal | 

X NULL_ | 

X allocator | 

X qualified_expr | 

X name | 

X aggr; 

X 

X/* "'(' expr ')'" is included under aggr */ 

X 

X 

X/* 4.5 */ 

X 

X/* 

X * logical_op : 

X * AND_ 

X * OR_ 

X * XOR_; 

X * 

X * This is an unused syntactic class. 

X */ 

X 

Xrelal_op : 

X '=' | 

X NOTEQL_ | 

X '<' | 

X LTEQ_ | 

X '>' | 

X GTEQL_; 

X 

Xbinary_add_op : 

X '+' | 

X '-' | 

X '&'; 

X 

Xunary_add_op : 

X '+' | 

X '-'; 

X 

Xmult_op : 

X '*' | 

X '/' | 

⌨️ 快捷键说明

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