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

📄 yaccdiffs

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻
字号:
                      Yacc DifferencesThis document gives a short list of differences between  thenew Yacc and earlier Yaccs._B_u_g_s _F_i_x_e_d1.   There was a bug which caused  Yacc  to  silently  steal     away in the night if an action had mismatched '' in it;     this is fixed.2.   A number of table size overflow conditions used  to  be     checked incorrectly or not at all; this is now better.3.   A bug which suppressed the printing of some rules  with     empty RHS's on the y.output file has been fixed._S_p_e_e_d_u_p_s, _S_h_r_i_n_k_s, _a_n_d _D_i_d_d_l_e_s1.   The old optimizer (-o) flag is now the default in Yacc.     At the same time, the Yacc process itself has been sped     up; the result is that Yacc takes  about  the  same  or     slightly  longer on short inputs, but is much faster on     long inputs.2.   The optimized parsers produced by Yacc are likely to be     2-3  times  faster  and 1-2k bytes smaller than the old     ones, for medium/large grammars.  The time to parse  is     now  essentially  independent  of  the grammar size; it     used to grow as the size of the grammar did.3.   The y.output file has been considerably reformatted, to     make  it easier to read.  The old "goto" table is gone;     the goto's for nonterminal symbols are now  printed  in     the  states  where  they  occur.   Rules  which  can be     reduced in a state have their rule number printed after     them,  in  ().   This makes it much easier to interpret     the "reduce n" actions.  The message "same  as  n"  has     been  removed; duplicate states are in fact duplicated,     saving shuffling and cross-referencing.4.   Various table sizes are somewhat bigger.5.   The form feed character, and the construction '\f', are     now  recognized;  form feed is ignored (=whitespace) on     input.                      January 14, 1977                           - 2 -6.   The arrays "yysterm" and "yysnter" are no  longer  pro-     duced  on  output; they were little used, and took up a     surprising amount of space in the parser.7.   Rules in the input which are not reduced are  now  com-     plained  about; they may represent unreachable parts of     the grammar, botched precedence,  or  duplicate  rules.     As  with  conflicts,  a summary complaint, "n rules not     reduced", appears at the terminal; more information  is     on the y.output file._N_e_w _F_e_a_t_u_r_e_s1.   The actions are now  copied  into  the  middle  of  the     parser, rather than being gathered into a separate rou-     tine.  It's faster.  Also, you can return a value  from     yyparse (and stop parsing...) by saying `return(x);' in     an action.  There are  macros  which  simulate  various     interesting parsing actions:     YYERROR  causes the parser to behave as if a syntax     error had been encountered (i.e., do error recovery)     YYACCEPT causes a return from yyparse with a value of 0     YYABORT  causes a return from yyparse with a value of 12.   The repositioning of the actions may cause scope  prob-     lems  for  some people who include lexical analyzers in     funny places.  This can probably be  avoided  by  using     another  new  feature:  the `-d' option.  Invoking Yacc     with the -d option causes  the  #defines  generated  by     Yacc  to  be  written out onto a file called "y.tab.h",     (as well as on the "y.tab.c" file).  This can  then  be     included as desired in lexical analyzers, etc.3.   Actions  are  now  permitted  within  rules;  for  such     actions,  $$, $1, $2, etc. continue to have their usual     meanings.  An error  message  is  returned  if  any  $n     refers  to  a value lying to the right of the action in     the rule.  These internal actions are assumed to return     a  value,  which  is accessed through the $n mechanism.     In the y.output file, the actions are  referred  to  by     created  nonterminal  names  of  the  form  $$nnn.  All     actions within rules are assumed to  be  distinct.   If     some   actions   are   the   same,  Yacc  might  report     reduce/reduce conflicts  which  could  be  resolved  by     explicitly  identifying  identical actions; does anyone     have a good idea for a syntax to do this?  The  =  sign     may  now be omitted in action constructions of the form     ={  ...   }.                      January 14, 1977                           - 3 -4.   As a result of the rearrangement of rules,  people  who     thought they knew what $1 really turned into, and wrote     programs which referred to yypv[1], etc., are in  trou-     ble.  See Steve Johnson if you are really suffering.                      January 14, 1977

⌨️ 快捷键说明

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