久久国产色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_欧美 国产 日本_好吊色欧美一区二区三区

国产精品久久久久久网站| 欧美不卡三区| 日韩高清国产一区在线观看| 91.com在线| 日韩欧美在线免费观看视频| 午夜免费日韩视频| 久久99精品国产99久久| 欧美在线影院在线视频| 国产精品电影一区| 99色精品视频| 日韩av电影国产| 久久久久久国产三级电影| 欧美影院在线播放| 日本三级中文字幕在线观看| 日日碰狠狠躁久久躁婷婷| 久久精品人人做人人爽电影| 欧美中文字幕视频在线观看| 日韩欧美亚洲区| 精品久久久三级| 久无码久无码av无码| 欧美黄色直播| 欧美亚洲色图视频| 毛片精品免费在线观看| 久久久久久国产精品| 久久国产精品高清| 久久国产午夜精品理论片最新版本| 国产成人在线一区二区| 国产日韩精品电影| 欧美一区二区三区四区在线| 日日碰狠狠丁香久燥| 欧美精品在欧美一区二区| 欧美亚洲国产精品| 国产三级精品在线不卡| 99久re热视频精品98| 丁香五月网久久综合| 亚洲国产日韩综合一区| 国产精品丝袜视频| 久久这里只有精品18| 国产福利不卡| 国产精品久久久久久久小唯西川| 欧美激情一二三| 国产精品成人在线| 中文字幕无码精品亚洲35| 久久精品国产2020观看福利| 国产精品入口尤物| 久久国产午夜精品理论片最新版本 | 国产欧美一区二区视频| 日韩欧美亚洲天堂| 国内精品**久久毛片app| 欧美亚州在线观看| 国产伦精品一区二区三区| 狠狠色噜噜狠狠狠狠色吗综合| 日韩视频在线视频| 国产在线视频一区| 激情视频在线观看一区二区三区| 国产在线精品一区二区三区》| 久久乐国产精品| 国产精品美女免费| 日韩在线综合网| 国产肉体ⅹxxx137大胆| 色偷偷888欧美精品久久久| 一区二区不卡在线观看| 黄色一级视频片| 久久久女女女女999久久| 久久91精品国产91久久跳| 热久久免费国产视频| 91久久精品国产91性色| 久久999免费视频| 免费在线一区二区| 久久久久久香蕉| 日韩尤物视频| 91久久伊人青青碰碰婷婷| 国产精品露出视频| 青青青免费在线| 久久久视频精品| 亚洲欧洲国产精品久久| 亚洲7777| 国产卡一卡二在线| 国产精品欧美亚洲777777| 日av中文字幕| 国产盗摄xxxx视频xxx69| 亚洲一区二区三区在线免费观看 | 日韩精品不卡| 99中文字幕| 欧美激情精品久久久| 精品视频一区在线| 国产精品视频精品视频| 欧美精品一区二区三区四区五区| 久久精品国产精品国产精品污| 无码人妻丰满熟妇区96| 91久久国产综合久久91精品网站 | 黄色片免费在线观看视频| 深夜福利一区二区| 日韩免费观看视频| 国产高清精品在线观看| 色视频一区二区三区| 久久人人爽人人爽人人片av高请 | 久久久久久久久久久久久国产精品| 午夜dv内射一区二区| 久久久视频在线| 日韩在线xxx| 久久99久久精品国产| 日韩精品欧美专区| 久久国产精品久久精品国产| 奇米成人av国产一区二区三区| 久久国产精品一区二区三区四区| 亚洲**2019国产| 久久人人爽人人爽人人片av高请| 日本国产欧美一区二区三区| 色偷偷噜噜噜亚洲男人的天堂| 欧洲视频一区二区三区| 国产精品日韩一区二区三区| 黄色动漫网站入口| 欧美精品999| 久久亚洲精品欧美| 日韩欧美视频第二区| 国产精品你懂得| 粉嫩av一区二区三区天美传媒| 久久亚洲精品无码va白人极品| 午夜探花在线观看| 色婷婷综合成人av| 精品午夜一区二区| 亚洲国产精品女人| 久久久精品亚洲| 日韩在线国产| 久久精品国产一区| 国产男女无遮挡| 日韩在线国产| 国产精品久久久久久中文字| 国产欧美日韩免费| 日本最新高清不卡中文字幕| 国产精品乱子乱xxxx| www日韩av| 日本久久久a级免费| 国产精品久久久久久久av电影| 国产精品亚洲αv天堂无码| 日韩av资源在线| 欧美xxxx综合视频| 麻豆一区二区三区在线观看 | 欧美日韩精品免费看| 在线视频不卡一区二区三区| 国产成人一区二区三区小说| 美女亚洲精品| 色就是色欧美| 精品国偷自产一区二区三区| 国产成人一二三区| 成人免费在线一区二区三区| 欧美日韩精品久久| 亚洲一区二区在线| 国产精品久久网| 国产高清自拍一区| 国产欧美日韩免费| 欧美午夜视频在线| 一本色道婷婷久久欧美| 国产精品无码免费专区午夜| 国产精品91一区| 性欧美激情精品| 久久国产精品电影| 久久久久久人妻一区二区三区| 国产精品一区二区三区观看| 欧美专区国产专区| 欧美一级片中文字幕| 一区二区在线观| 国产精品国产三级欧美二区| 久久精品国产精品国产精品污| www.日本少妇| 国产欧美日韩视频一区二区三区| 免费在线a视频| 欧日韩不卡在线视频| 少妇av一区二区三区无码| 久久久久久国产精品| 欧美理论电影在线观看| 国产精品久久婷婷六月丁香| 久久久久中文字幕2018| 国产精品 日韩| 91精品在线看| 福利在线一区二区| 国产精品一区二区在线观看| 国产原创欧美精品| 精品一区二区三区视频日产| 欧美日韩国产综合在线| 青青视频免费在线| 青草视频在线观看视频| 日韩欧美亚洲日产国| 天堂资源在线亚洲视频| 亚洲精品一卡二卡三卡四卡| 亚洲最大福利视频网站| 久久久久久999| 欧美成人午夜剧场免费观看| 麻豆成人在线看| 久久国产精品久久久久久久久久| 国产精品国产一区二区| 国产精品第一第二| 欧美成在线观看| 欧美激情a在线| 亚洲乱码一区二区三区三上悠亚| 亚洲一区二区三区视频播放| 亚洲v日韩v综合v精品v| 日韩一区二区三区资源| 日韩一级免费在线观看|