我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

您的位置:網站首頁 > CAM

C編譯器LEX及YACC輸入源文件介紹

時間:2011-03-01 09:39:08 來源:

  本文介紹了C編譯器LEX及YACC輸入源文件相關內容。

  /*YACC--LALR(1) PARSER*/

  %token IDENTIFIER CONSTANT STRING_LITERAL SIZEOF

  %token PTR_OP INC_OP DEC_OP LEFT_OP RIGHT_OP LE_OP GE_OP EQ_OP NE_OP

  %token AND_OP OR_OP MUL_ASSIGN DIV_ASSIGN MOD_ASSIGN ADD_ASSIGN

  %token SUB_ASSIGN LEFT_ASSIGN RIGHT_ASSIGN AND_ASSIGN

  %token XOR_ASSIGN OR_ASSIGN TYPE_NAME

  %token TYPEDEF EXTERN STATIC AUTO REGISTER

  %token CHAR SHORT INT LONG SIGNED UNSIGNED FLOAT DOUBLE CONST VOLATILE VOID

  %token STRUCT UNION ENUM ELIPSIS RANGE

  %token CASE DEFAULT IF ELSE SWITCH WHILE DO FOR GOTO CONTINUE BREAK RETURN

  %start file

  %%

  primary_expr

  : identifier

  | CONSTANT

  | STRING_LITERAL

  | '(' expr ')'

  ;

  postfix_expr

  : primary_expr

  | postfix_expr '[' expr ']'

  | postfix_expr '(' ')'

  | postfix_expr '(' argument_expr_list ')'

  | postfix_expr '.' identifier

  | postfix_expr PTR_OP identifier

  | postfix_expr INC_OP

  | postfix_expr DEC_OP

  ;

  argument_expr_list

  : assignment_expr

  | argument_expr_list ',' assignment_expr

  ;

  unary_expr

  : postfix_expr

  | INC_OP unary_expr

  | DEC_OP unary_expr

  | unary_operator cast_expr

  | SIZEOF unary_expr

  | SIZEOF '(' type_name ')'

  ;

  unary_operator

  : '&'

  | '*'

  | '+'

  | '-'

  | '~'

  | '!'

  ;

  cast_expr

  : unary_expr

  | '(' type_name ')' cast_expr

  ;

  multiplicative_expr

  : cast_expr

  | multiplicative_expr '*' cast_expr

  | multiplicative_expr '/' cast_expr

  | multiplicative_expr '%' cast_expr

  additive_expr

  : multiplicative_expr

  | additive_expr '+' multiplicative_expr

  | additive_expr '-' multiplicative_expr

  ;

  shift_expr

  : additive_expr

  | shift_expr LEFT_OP additive_expr

  | shift_expr RIGHT_OP additive_expr

  ;

  relational_expr

  : shift_expr

  | relational_expr '<' shift_expr

  | relational_expr '>' shift_expr

  | relational_expr LE_OP shift_expr

  | relational_expr GE_OP shift_expr

  ;

  equality_expr

  : relational_expr

  | equality_expr EQ_OP relational_expr

  | equality_expr NE_OP relational_expr

  ;

  and_expr

  : equality_expr

  | and_expr '&' equality_expr

  ;

  exclusive_or_expr

  : and_expr

  | exclusive_or_expr '^' and_expr

  ;

  inclusive_or_expr

  : exclusive_or_expr

  | inclusive_or_expr '|' exclusive_or_expr

  ;

  logical_and_expr

  : inclusive_or_expr

  | logical_and_expr AND_OP inclusive_or_expr

  ;

  logical_or_expr

  : logical_and_expr

  | logical_or_expr OR_OP logical_and_expr

  ;

  conditional_expr

  : logical_or_expr

  | logical_or_expr '?' logical_or_expr ':' conditional_expr

  ;

  assignment_expr

  : conditional_expr

  | unary_expr assignment_operator assignment_expr

  ;

  assignment_operator

  : '='

  | MUL_ASSIGN

  | DIV_ASSIGN

  | MOD_ASSIGN

  | ADD_ASSIGN

  | SUB_ASSIGN

  | LEFT_ASSIGN

  | RIGHT_ASSIGN

  | AND_ASSIGN

  | XOR_ASSIGN

  | OR_ASSIGN

  ;

  expr

  : assignment_expr

  | expr ',' assignment_expr

  ;

  constant_expr

  : conditional_expr

  ;

  declaration

  : declaration_specifiers ';'

  | declaration_specifiers init_declarator_list ';'

  ;

  declaration_specifiers

  : storage_class_specifier

  | storage_class_specifier declaration_specifiers

  | type_specifier

  | type_specifier declaration_specifiers

  ;

  init_declarator_list

  : init_declarator

  | init_declarator_list ',' init_declarator

  ;

  init_declarator

  : declarator

  | declarator '=' initializer

  ;

  storage_class_specifier

  : TYPEDEF

  | EXTERN

  | STATIC

  | AUTO

  | REGISTER

  ;

  type_specifier

  : CHAR

  | SHORT

  | INT

  | LONG

  | SIGNED

  | UNSIGNED

  | FLOAT

  | DOUBLE

  | CONST

  | VOLATILE

  | VOID

  | struct_or_union_specifier

  | enum_specifier

  | TYPE_NAME

  ;

  struct_or_union_specifier

  : struct_or_union identifier '{' struct_declaration_list '}'

  | struct_or_union '{' struct_declaration_list '}'

  | struct_or_union identifier

  ;

  struct_or_union

  : STRUCT

  | UNION

  ;

  struct_declaration_list

  : struct_declaration

  | struct_declaration_list struct_declaration

  ;

  struct_declaration

  : type_specifier_list struct_declarator_list ';'

  ;

  struct_declarator_list

  : struct_declarator

  | struct_declarator_list ',' struct_declarator

  ;

  struct_declarator

  : declarator

  | ':' constant_expr

  | declarator ':' constant_expr

  ;

  enum_specifier

  : ENUM '{' enumerator_list '}'

  | ENUM identifier '{' enumerator_list '}'

  | ENUM identifier

  ;

  enumerator_list

  : enumerator

  | enumerator_list ',' enumerator

  ;

  enumerator

  : identifier

  | identifier '=' constant_expr

  ;

  declarator

  : declarator2

  | pointer declarator2

  ;

  declarator2

  : identifier

  | '(' declarator ')'

  | declarator2 '[' ']'

  | declarator2 '[' constant_expr ']'

  | declarator2 '(' ')'

  | declarator2 '(' parameter_type_list ')'

  | declarator2 '(' parameter_identifier_list ')'

  ;

  pointer

  : '*'

  | '*' type_specifier_list

  | '*' pointer

  | '*' type_specifier_list pointer

  ;

  type_specifier_list

  : type_specifier

  | type_specifier_list type_specifier

  ;

  parameter_identifier_list

  : identifier_list

  | identifier_list ',' ELIPSIS

  ;

  identifier_list

  : identifier

  | identifier_list ',' identifier

  ;

  parameter_type_list

  : parameter_list

  | parameter_list ',' ELIPSIS

  ;

  parameter_list

  : parameter_declaration

  | parameter_list ',' parameter_declaration

  ;

  parameter_declaration

  : type_specifier_list declarator

  | type_name

  ;

  type_name

  : type_specifier_list

  | type_specifier_list abstract_declarator

  ;

  abstract_declarator

  : pointer

  | abstract_declarator2

  | pointer abstract_declarator2

  ;

  abstract_declarator2

  : '(' abstract_declarator ')'

  | '[' ']'

  | '[' constant_expr ']'

  | abstract_declarator2 '[' ']'

  | abstract_declarator2 '[' constant_expr ']'

  | '(' ')'

  | '(' parameter_type_list ')'

  | abstract_declarator2 '(' ')'

  | abstract_declarator2 '(' parameter_type_list ')'

  ;

  initializer

  : assignment_expr

  | '{' initializer_list '}'

  | '{' initializer_list ',' '}'

  ;

  initializer_list

  : initializer

  | initializer_list ',' initializer

  ;

  statement

  : labeled_statement

  | compound_statement

  | expression_statement

  | selection_statement

  | iteration_statement

  | jump_statement

  ;

  labeled_statement

  : identifier ':' statement

  | CASE constant_expr ':' statement

  | DEFAULT ':' statement

  ;

  compound_statement

  : '{' '}'

  | '{' statement_list '}'

  | '{' declaration_list '}'

  | '{' declaration_list statement_list '}'

  ;

  declaration_list

  : declaration

  | declaration_list declaration

  ;

  statement_list

  : statement

  | statement_list statement

  ;

  expression_statement

  : ';'

  | expr ';'

  ;

  selection_statement

  : IF '(' expr ')' statement

  | IF '(' expr ')' statement ELSE statement

  | SWITCH '(' expr ')' statement

  ;

  iteration_statement

  : WHILE '(' expr ')' statement

  | DO statement WHILE '(' expr ')' ';'

  | FOR '(' ';' ';' ')' statement

  | FOR '(' ';' ';' expr ')' statement

  | FOR '(' ';' expr ';' ')' statement

  | FOR '(' ';' expr ';' expr ')' statement

  | FOR '(' expr ';' ';' ')' statement

  | FOR '(' expr ';' ';' expr ')' statement

  | FOR '(' expr ';' expr ';' ')' statement

  | FOR '(' expr ';' expr ';' expr ')' statement

  ;

  jump_statement

  : GOTO identifier ';'

  | CONTINUE ';'

  | BREAK ';'

  | RETURN ';'

  | RETURN expr ';'

  ;

  file

  : external_definition

  | file external_definition

  ;

  external_definition

  : function_definition

  | declaration

  ;

  function_definition

  : declarator function_body

  | declaration_specifiers declarator function_body

  ;

  function_body

  : compound_statement

  | declaration_list compound_statement

  ;

  identifier

  : IDENTIFIER

  ;

  %%

  #include

  extern char yytext[];

  extern int column;

  yyerror(s)

  char *s;

  {

  fflush(stdout);

  printf(" %*s %*s ", column, "^", column, s);

  }

  main()

  {

  int yyparse();

  return(yyparse());

  }

  RogueMonster

  else

  echo "will not over write ./main.c"

  fi

  if `test ! -s ./scan.l`

  then

  echo "writting ./scan.l"

  cat > ./scan.l << 'RogueMonster'

  D [0-9]

  L [a-zA-Z_]

  H [a-fA-F0-9]

  E [Ee][+-]?{D}+

  FS (f|F|l|L)

  IS (u|U|l|L)*

  %{

  #include

  #include "y.tab.h"

  void count();

  %}

  %%

  "/*" { comment(); }

  "auto" { count(); return(AUTO); }

  "break" { count(); return(BREAK); }

  "case" { count(); return(CASE); }

  "char" { count(); return(CHAR); }

  "const" { count(); return(CONST); }

  "continue" { count(); return(CONTINUE); }

  "default" { count(); return(DEFAULT); }

  "do" { count(); return(DO); }

  "double" { count(); return(DOUBLE); }

  "else" { count(); return(ELSE); }

  "enum" { count(); return(ENUM); }

  "extern" { count(); return(EXTERN); }

  "float" { count(); return(FLOAT); }

  "for" { count(); return(FOR); }

  "goto" { count(); return(GOTO); }

  "if" { count(); return(IF); }

  "int" { count(); return(INT); }

  "long" { count(); return(LONG); }

  "register" { count(); return(REGISTER); }

  "return" { count(); return(RETURN); }

  "short" { count(); return(SHORT); }

  "signed" { count(); return(SIGNED); }

  "sizeof" { count(); return(SIZEOF); }

  "static" { count(); return(STATIC); }

  "struct" { count(); return(STRUCT); }

  "switch" { count(); return(SWITCH); }

  "typedef" { count(); return(TYPEDEF); }

  "union" { count(); return(UNION); }

  "unsigned" { count(); return(UNSIGNED); }

  "void" { count(); return(VOID); }

  "volatile" { count(); return(VOLATILE); }

  "while" { count(); return(WHILE); }

  {L}({L}|{D})* { count(); return(check_type()); }

  0[xX]{H}+{IS}? { count(); return(CONSTANT); }

  0[xX]{H}+{IS}? { count(); return(CONSTANT); }

  0{D}+{IS}? { count(); return(CONSTANT); }

  0{D}+{IS}? { count(); return(CONSTANT); }

  {D}+{IS}? { count(); return(CONSTANT); }

  {D}+{IS}? { count(); return(CONSTANT); }

  '(\.|[^\'])+' { count(); return(CONSTANT); }

  {D}+{E}{FS}? { count(); return(CONSTANT); }

  {D}*"."{D}+({E})?{FS}? { count(); return(CONSTANT); }

  {D}+"."{D}*({E})?{FS}? { count(); return(CONSTANT); }

  "(\.|[^\"])*" { count(); return(STRING_LITERAL); }

  ">>=" { count(); return(RIGHT_ASSIGN); }

  "<<=" { count(); return(LEFT_ASSIGN); }

  "+=" { count(); return(ADD_ASSIGN); }

  "-=" { count(); return(SUB_ASSIGN); }

  "*=" { count(); return(MUL_ASSIGN); }

  "/=" { count(); return(DIV_ASSIGN); }

  "%=" { count(); return(MOD_ASSIGN); }

  "&=" { count(); return(AND_ASSIGN); }

  "^=" { count(); return(XOR_ASSIGN); }

  "|=" { count(); return(OR_ASSIGN); }

  ">>" { count(); return(RIGHT_OP); }

  "<<" { count(); return(LEFT_OP); }

  "++" { count(); return(INC_OP); }

  "--" { count(); return(DEC_OP); }

  "->" { count(); return(PTR_OP); }

  "&&" { count(); return(AND_OP); }

  "||" { count(); return(OR_OP); }

  "<=" { count(); return(LE_OP); }

  ">=" { count(); return(GE_OP); }

  "==" { count(); return(EQ_OP); }

  "!=" { count(); return(NE_OP); }

  ";" { count(); return(';'); }

  "{" { count(); return('{'); }

  "}" { count(); return('}'); }

  "," { count(); return(','); }

  ":" { count(); return(':'); }

  "=" { count(); return('='); }

  "(" { count(); return('('); }

  ")" { count(); return(')'); }

  "[" { count(); return('['); }

  "]" { count(); return(']'); }

  "." { count(); return('.'); }

  "&" { count(); return('&'); }

  "!" { count(); return('!'); }

  "~" { count(); return('~'); }

  "-" { count(); return('-'); }

  "+" { count(); return('+'); }

  "*" { count(); return('*'); }

  "/" { count(); return('/'); }

  "%" { count(); return('%'); }

  "<" { count(); return('<'); }

  ">" { count(); return('>'); }

  "^" { count(); return('^'); }

  "|" { count(); return('|'); }

  "?" { count(); return('?'); }

  [ tv f] { count(); }

  . { /* ignore bad characters */ }

  %%

  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] != '我想看一级黄色大片_久久亚洲国产精品一区二区_久久精品免视看国产明星_91久久青青青国产免费

            欧美日韩午夜影院| 亚洲成人中文在线| 99久久99久久精品国产片果冻| 激情六月婷婷综合| 国产在线精品一区二区夜色| 亚洲成人免费电影| 日韩精品一二三区| 日韩精彩视频在线观看| 亚洲成av人影院| 三级不卡在线观看| 老司机午夜精品| 狠狠久久亚洲欧美| 成人污视频在线观看| 北岛玲一区二区三区四区| 91天堂素人约啪| 欧美日韩成人综合天天影院| 欧美精品久久99| 日韩一区二区三区三四区视频在线观看 | 奇米在线7777在线精品| 午夜电影一区二区三区| 日本视频中文字幕一区二区三区| 九一九一国产精品| 国产精品2024| av电影天堂一区二区在线观看| 91精品福利在线| 欧美卡1卡2卡| 久久久久久久久岛国免费| 国产精品美日韩| 亚洲一区欧美一区| 麻豆精品一区二区综合av| 粗大黑人巨茎大战欧美成人| 色婷婷综合久久久久中文一区二区| 欧美日韩国产小视频| 亚洲精品在线三区| 亚洲人成网站影音先锋播放| 日韩 欧美一区二区三区| 国产成人亚洲综合a∨婷婷| 色拍拍在线精品视频8848| 欧美一区二区三区视频免费播放 | 欧美三级日韩三级国产三级| 日韩一区二区麻豆国产| 中文字幕一区av| 蜜臀av性久久久久蜜臀aⅴ四虎| 成人手机在线视频| 91精品国产一区二区三区蜜臀| 欧美高清一级片在线观看| 亚洲图片欧美色图| 成人一道本在线| 欧美一区午夜精品| 亚洲视频免费在线| 国产一区二区不卡老阿姨| 欧美天堂亚洲电影院在线播放| 久久一区二区三区四区| 偷拍日韩校园综合在线| 94-欧美-setu| 国产欧美日韩另类视频免费观看| 视频在线在亚洲| 欧美在线一区二区| 国产精品久久久久一区二区三区共| 日本强好片久久久久久aaa| 91看片淫黄大片一级在线观看| 久久夜色精品一区| 日韩av网站免费在线| 色视频一区二区| 国产精品电影院| 国产激情一区二区三区| 日韩欧美激情一区| 日韩精品一级中文字幕精品视频免费观看 | 成人免费观看av| xnxx国产精品| 日本美女一区二区三区| 欧美性猛片xxxx免费看久爱| 综合欧美亚洲日本| 成人国产精品免费网站| 国产亚洲精品免费| 国产精品综合一区二区三区| 欧美成va人片在线观看| 日本欧美一区二区| 欧美一区二区视频在线观看2022| 亚洲午夜精品17c| 在线亚洲精品福利网址导航| 亚洲裸体在线观看| 色综合久久中文字幕| 亚洲精品国产一区二区精华液| 91精品欧美综合在线观看最新 | 亚洲精品菠萝久久久久久久| 91蜜桃传媒精品久久久一区二区| 中文一区一区三区高中清不卡| 东方aⅴ免费观看久久av| 国产清纯白嫩初高生在线观看91 | 成人综合婷婷国产精品久久免费| 久久久综合视频| 国产激情视频一区二区在线观看| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 国产九色sp调教91| 欧美高清在线一区二区| 成人午夜私人影院| 亚洲欧美日韩一区二区| 在线亚洲高清视频| 视频一区视频二区中文字幕| 日韩一区二区三区在线观看| 极品美女销魂一区二区三区| 国产欧美一区二区精品性色 | 91免费看片在线观看| 亚洲综合久久久| 欧美一区二区三区日韩视频| 国模娜娜一区二区三区| 国产欧美精品国产国产专区| 色av成人天堂桃色av| 日韩国产高清在线| 久久午夜色播影院免费高清| 成人av网在线| 亚洲成人三级小说| 精品福利二区三区| 色综合久久久久综合| 肉色丝袜一区二区| 国产精品入口麻豆原神| 色美美综合视频| 美女视频黄频大全不卡视频在线播放| 国产亚洲一区二区三区在线观看| 日本乱码高清不卡字幕| 久久se这里有精品| 一区二区三区在线播| 日韩精品一区二区三区在线播放| 成人精品视频一区二区三区| 亚洲成av人片| 中文字幕永久在线不卡| 欧美一级国产精品| 一本久久a久久精品亚洲| 久久99国产精品尤物| 亚洲一区在线观看免费| 亚洲色图.com| 久久天堂av综合合色蜜桃网| 色婷婷综合五月| 国产成人精品影院| 麻豆91小视频| 性感美女极品91精品| 中文字幕一区二区三区色视频| 欧美一级精品在线| 欧美亚洲日本国产| 成人av在线一区二区三区| 美女一区二区三区| 亚洲国产日韩一级| 亚洲欧洲av在线| 26uuu亚洲综合色| 欧美美女直播网站| 91老司机福利 在线| 国产福利91精品一区二区三区| 另类的小说在线视频另类成人小视频在线| 国产精品国产三级国产三级人妇| 26uuu成人网一区二区三区| 欧美人动与zoxxxx乱| 色一情一乱一乱一91av| 成人在线综合网| 国模套图日韩精品一区二区| 性久久久久久久久| 一区二区三区久久久| 最新国产成人在线观看| 国产午夜精品久久久久久免费视| 日韩一区二区精品| 日韩一级大片在线| 91麻豆精品国产自产在线| 欧美系列在线观看| 色综合久久88色综合天天| 99国产精品99久久久久久| 成人午夜视频在线| 丁香六月综合激情| 大桥未久av一区二区三区中文| 国产高清成人在线| 成人国产精品免费观看动漫| 成人毛片视频在线观看| 白白色 亚洲乱淫| 色综合久久久久久久| 在线亚洲高清视频| 欧美精选在线播放| 日韩精品在线看片z| 久久久亚洲精品一区二区三区| 亚洲精品在线电影| 国产欧美一区二区精品秋霞影院 | 欧美大度的电影原声| 2019国产精品| 国产精品污网站| 亚洲黄色小说网站| 日本在线不卡一区| 国内精品视频一区二区三区八戒| 国产精品亚洲专一区二区三区| 国产传媒欧美日韩成人| 成人av电影在线观看| 在线精品视频小说1| 制服丝袜av成人在线看| 精品国产区一区| 日韩一区有码在线| 亚洲va天堂va国产va久| 激情图片小说一区| 一本色道久久综合精品竹菊| 欧美日本不卡视频| 久久久亚洲欧洲日产国码αv| 亚洲男人的天堂av| 精品中文字幕一区二区小辣椒| 国产成人午夜片在线观看高清观看|