久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区

您的位置:網站首頁 > 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] != '久久国产色av_国产人妻777人伦精品hd_欧美 国产 日本_好吊色欧美一区二区三区

久久久免费电影| 久久国产精品久久久久久| 免费观看亚洲视频| 欧美人与性禽动交精品| 欧美深夜福利视频| 欧美亚洲第一页| 欧美日韩精品免费看| 欧洲在线视频一区| 欧美亚洲丝袜| 黄色一区三区| 国产一区玩具在线观看| 国产一区视频免费观看| 国产伦一区二区三区色一情| 国产免费一区二区三区在线观看 | 欧美 国产 综合| 欧美视频第一区| 精品人伦一区二区三区| 精品少妇人欧美激情在线观看| 国产欧美日韩综合精品二区| 成人国产精品av| 久久久久se| 日韩在线中文字幕| 国产精品第100页| 亚洲最大激情中文字幕| 三区精品视频观看| 日韩欧美猛交xxxxx无码| 欧美亚洲国产精品| 国产精品自在线| 国产福利一区二区三区在线观看| 日韩视频免费看| 欧美精品www| 欧美一区二区三区免费观看| 欧美日韩第二页| 99久久精品免费看国产四区| 久久av一区二区三区漫画| 国产精品日韩高清| 亚洲7777| 精品视频免费观看| 国产国语videosex另类| 久久综合88中文色鬼| 中国人体摄影一区二区三区| 日本久久久久亚洲中字幕| 精品无人区一区二区三区竹菊| 97国产精品久久| 久久精品2019中文字幕| 久久99国产综合精品女同| 欧美一级黄色网| 国产日韩av高清| 色婷婷综合久久久久中文字幕1| 久久99久久99精品免观看粉嫩| 日本a视频在线观看| 国产伦精品一区二区三区四区免费 | 日韩.欧美.亚洲| 女女同性女同一区二区三区按摩| 99久久精品久久久久久ai换脸| 国产精品久久视频| 日本一区高清在线视频| 国产亚洲综合视频| 久久国产精品网| 亚洲高清在线观看一区| 国产一区二区自拍| 久久久久久中文| 亚洲永久在线观看| 国产欧美日韩综合精品二区| 久久精品小视频| 日韩偷拍一区二区| 国产成人一区二| 动漫一区二区在线| 国产精选久久久久久| 国产精品久久久久久久久久东京| 热草久综合在线| 国产成人精品免费视频大全最热 | 久久精品亚洲热| 日本在线观看一区二区| 成人av蜜桃| 久久综合九色九九| 免费看国产精品一二区视频| 久久精品国产亚洲精品| 日韩偷拍一区二区| 国产v综合ⅴ日韩v欧美大片| 亚洲一区二区三区四区在线播放| 国产午夜福利视频在线观看| 久久久精品美女| 欧美精品一区免费| 国产精品视频一二三四区| 青青成人在线| 日韩在线观看高清| 欧美精品久久久久久久免费| 久久久国产精品亚洲一区| 欧美日韩国产不卡在线看| 久久精品小视频| 韩国国内大量揄拍精品视频| 国产精品久久久久一区二区| 免费毛片一区二区三区久久久| 国产精品美腿一区在线看| 欧美极品一区| 国产精品成人一区二区三区| 黄色一级视频片| 久久av.com| 国产欧美精品久久久| 一本—道久久a久久精品蜜桃| caoporn国产精品免费公开| 亚洲精品日韩在线观看| 久久婷婷国产综合尤物精品| 日本a级片在线观看| 久久精品成人欧美大片| 欧美日韩性生活片| 国产精品对白刺激| 成人在线小视频| 色综合666| 久久精品亚洲热| 国产日产欧美a一级在线| 色中色综合影院手机版在线观看| youjizz.com亚洲| 日韩专区第三页| 精品国产拍在线观看| 国产自偷自偷免费一区| 中文字幕精品在线播放| 久久一区免费| 欧美大香线蕉线伊人久久 | 国产99久久久欧美黑人| 91精品国产99久久久久久红楼| 日本一道本久久| 国产精品精品视频| 99在线视频播放| 日韩不卡一二区| 国产精品二区在线| 97免费在线视频| 青草热久免费精品视频| 精品国产一区二区三区麻豆免费观看完整版 | 久久久久国产精品www| 久久久久久www| 国自在线精品视频| 亚洲人成网站在线观看播放| 久久久久久久av| 蜜桃精品久久久久久久免费影院| 亚洲精品一区二区三区蜜桃久| 色妞一区二区三区| 99在线观看| 免费久久99精品国产自| 亚洲国产精品视频一区| 久久精品国产一区| 97欧洲一区二区精品免费| 日韩精品成人一区二区在线观看| 久久在线精品视频| 久久国产精品久久| chinese少妇国语对白| 欧美不卡福利| 亚洲精品乱码久久久久久自慰| 国产精品乱码一区二区三区| 久久久午夜视频| 国产免费高清一区| 欧美伊久线香蕉线新在线| 一本久道综合色婷婷五月| 国产精品美女免费视频| 国产高清www| 国产乱肥老妇国产一区二| 欧美亚洲日本在线观看| 一区二区冒白浆视频| 国产精品久久久久久影视| 国产不卡一区二区视频| 成人一区二区av| 国产在线一区二| 日韩久久一级片| 无码内射中文字幕岛国片 | 色综合久久久久无码专区| 美日韩精品免费观看视频| 久久国内精品一国内精品| 久久免费视频1| 99高清视频有精品视频| 国产特级黄色大片| 男女猛烈激情xx00免费视频| 日本va中文字幕| 性欧美大战久久久久久久| 亚洲综合一区二区不卡| 欧美激情精品久久久| 国产精品二区三区四区| 国产精品视频地址| 色妞久久福利网| 日韩在线一区二区三区免费视频| 久久精品中文字幕一区二区三区| 91久久伊人青青碰碰婷婷| www.亚洲视频.com| 91久久精品视频| 91精品久久久久久久久久入口| 国产精品亚洲不卡a| 国产精品一区二区你懂得| 国产精品一区二区免费看| 国产欧洲精品视频| 国产欧美va欧美va香蕉在| 精品无码av无码免费专区 | 日本久久久久久久久| 欧美一区二区大胆人体摄影专业网站 | 国产精品视频1区| 国产精品手机在线| 国产精品免费入口| 国产精品福利网站| 久久综合久久八八| 欧美另类在线播放| 欧美人与性动交|