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

您的位置:網(wǎng)站首頁 > CAM

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

時(shí)間:2011-03-01 09:39:08 來源:

  本文介紹了C編譯器LEX及YACC輸入源文件相關(guān)內(nèi)容。

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

欧美激情第1页| 亚洲欧洲中文| 欧美日韩成人免费| 日本一区二区三区精品视频| 免费高清一区二区三区| 国产成人综合亚洲| 亚洲一区二区自拍| 国产精品一区二区三区观看| 国产精品久久..4399| 日本wwwcom| 久久国产精品免费观看| 亚洲乱码国产一区三区| 成人h在线播放| 国产av第一区| 国产人妻777人伦精品hd| 国产精品美女呻吟| 欧美xxxx黑人又粗又长密月| 日韩综合视频在线观看| 欧洲亚洲一区二区三区四区五区| 国产精品99久久久久久大便 | 亚洲国产婷婷香蕉久久久久久99| 国产精品一色哟哟| 一区二区三区四区在线视频| 国产美女久久久| 欧美激情亚洲视频| av片在线免费| 懂色一区二区三区av片| 91精品国产91久久久久久不卡 | 97久久超碰福利国产精品…| 中文字幕一区二区三区在线乱码 | 欧美日韩无遮挡| 久久久国产在线视频| 欧美乱大交xxxxx潮喷l头像| 久久久久久久久久久久久久久久av | 精品国产一区二区三区四区在线观看 | 欧美激情国产精品| 国产精品揄拍一区二区| 一区二区不卡视频| 9a蜜桃久久久久久免费| 亚洲免费视频一区| 久久亚洲精品欧美| 欧美在线视频二区| 国产精品视频一二三四区| 精品人伦一区二区三区| 久久五月天色综合| 97久久国产精品| 日本欧美黄网站| 久久精品这里热有精品| 国产三级中文字幕| 亚洲综合视频1区| 久久一区二区三区欧美亚洲| 青青青在线观看视频| 欧美成人精品三级在线观看| 成人国产一区二区三区| 熟女视频一区二区三区| 国产成人综合av| 欧美日韩视频在线一区二区观看视频| 国产精品偷伦视频免费观看国产| 国产欧美中文字幕| 熟女少妇在线视频播放| 久久最新资源网| 国产精品一区二区欧美黑人喷潮水| 亚洲欧洲国产精品久久| 久久久久久久久久久免费视频| 国精产品一区一区三区有限在线| 亚洲伊人婷婷| 国产成人三级视频| 福利视频久久| 青青草原av在线播放| 欧美日韩国产91| 国产激情视频一区| 国产欧美精品aaaaaa片| 日韩欧美在线免费观看视频| 欧美精品一本久久男人的天堂| 国产经典一区二区三区| 国产一区香蕉久久| 日韩精品一区二区三区外面| 一区中文字幕在线观看| 国产精品日韩久久久久| 久久琪琪电影院| 国产美女三级视频| 欧美亚洲伦理www| 亚洲精品一区二区三区av| 国产精品久久久一区二区三区| 国产精品69久久久| 精品嫩模一区二区三区| 日本在线观看一区二区| 一本—道久久a久久精品蜜桃| 久久精品视频99| 久久久国内精品| 国产精品亚洲视频在线观看| 欧美亚洲视频一区二区| 性色av一区二区三区在线观看| 国产精品久久久久久久7电影| 久久免费视频网站| 国产日韩久久| 欧美亚洲另类制服自拍| 色女人综合av| 亚洲国产精品日韩| 久久久久久高潮国产精品视| 久久人人爽人人爽爽久久| 久久男人的天堂| 91禁国产网站| 99国产精品久久久久老师| 国产亚洲精品自在久久| 激情六月天婷婷| 欧美夜福利tv在线| 日韩视频专区| 亚洲精品高清国产一线久久| 欧美精品免费看| 国产精品美乳一区二区免费| 日韩中文字幕国产精品| 国产成人精品日本亚洲专区61| 91精品美女在线| 隔壁老王国产在线精品| 国产三级精品网站| 精品一区二区三区日本| 欧美精品成人网| 热99精品里视频精品| 日本高清不卡三区| 日韩欧美国产综合在线| 色阁综合av| 日本亚洲欧洲精品| 日本一区视频在线观看免费| 中文字幕第一页亚洲| 美女视频久久黄| 国产99久久久欧美黑人| 国产av不卡一区二区| 欧美日韩国产999| 一本久道综合色婷婷五月| 欧美激情精品久久久久久蜜臀| 欧美激情精品久久久| 亚洲中文字幕无码专区| 亚洲a区在线视频| 日本在线观看天堂男亚洲| 日韩欧美在线免费观看视频| 欧美影院久久久| 免费看欧美黑人毛片| 国产在线视频一区| 国产在线播放一区二区| 国产精品亚洲美女av网站| 97欧洲一区二区精品免费| 91久久久久久国产精品| 久久国产精品一区二区三区| 久久久久久亚洲精品不卡4k岛国| 91精品国产综合久久香蕉最新版| 国产高潮呻吟久久久| 日韩一中文字幕| 国产精品国产精品| 亚洲中文字幕无码专区| 日本久久久a级免费| 男人的天堂狠狠干| 国产伦视频一区二区三区| www亚洲国产| 久久精品视频16| 国产精品观看在线亚洲人成网| 久久99视频精品| 日本一区美女| 欧美日韩亚洲免费| 国产伦视频一区二区三区| 91久久精品国产91久久| 视频一区视频二区国产精品| 国产精品成人一区二区| 亚洲在线视频一区二区| 日韩精品手机在线观看| 国精产品99永久一区一区| 97人人香蕉| 日韩视频欧美视频| 欧美激情国产高清| 日本www在线播放| 国产日韩在线看| 久久久综合香蕉尹人综合网| 国产精品视频免费在线| 亚洲一区二区在线观| 欧美一级成年大片在线观看| 国产日韩av在线| 国产成人精品av在线| 久久成年人视频| 日本午夜一区二区三区| 国产深夜男女无套内射| 久久艹中文字幕| 中文字幕免费在线不卡| 欧美视频小说| 97久久精品人人澡人人爽缅北| 久久精品人人爽| 亚洲av综合色区| 免费久久久久久| 久久亚洲精品欧美| 国产99视频在线观看| 热门国产精品亚洲第一区在线| 精品视频高清无人区区二区三区| 131美女爱做视频| 国产精品黄页免费高清在线观看| 日本中文字幕一级片| 国产剧情日韩欧美| 国产精品欧美久久| 日本免费成人网| 91精品国产电影| 中文字幕av日韩精品| 狠狠干视频网站|