📄 updates
字号:
1.00B1 Fixes:
Missing includes from antlr.h
1.00B2 Fixes:
Didn't save _t during (...)?
1.00B3 Fixes:
Fixed bug that wouldn't allow labels on wildcard nodes
Would dump argument list to some labelled rule refs
Fixed code gen bug with #(. B) as last element of production
1.00B4 Fixes:
Another teeny-weeny little code gen fix related to "rule > [result]"
1.00B5 Fixes:
Made tar file create a root directory called sorcerer
Line 465 in gen.c had an 'stdout' where an 'output' was needed.
1.00B6 Fixes:
K&R function headers were missing a ',' in the argument list
Made the default prototype style the same as how you compiled SORCERER itself.
1.00B7
Rik Faith <faith@cs.unc.edu>:
[...] patch fixes a bug in sorcerer where the "actions" in the
input file which appeared between the second set of << >>'s (i.e.,
the user's main routine) would format poorly in the output file.
1.00B8:
changed the STreeTry() macro (it's much better now)
added -transform option (double pointers now needed in tree structure)
added ``!'' operator to indicate what is not to be included in tree copy
from input to output tree in transform mode.
Added _result parameter for transform mode
Changed sorcerer.c to errsupport.c; sorcerer.c is now regular support code.
function sorcerer_panic() was added
Added all of the libraries for tree rewrite support
(ast.c slist.c sint.c hash.c sstack.c)
Added a very cool function ast_scan(); check it out
Added @-variables; e.g., @(int i = 3) ... @i = 4;
Added __USE_PROTOS definition in sorcerer.h
SORCERER now reads the config.h file used by ANTLR/DLG.
Uses ast_right(rw) and ast_down(rw) so C/C++ compatible -- also means
C/C++ can have different tree layout and use these as functions to
simulate child-sibling trees.
Fixed: Bad error messages:
a : A | (b)? b;
b : B;
error: infinite recursion from rule a to rule b
Fixed a bug:
Sorcerer a simple tree-parser generator Version 1.00B3 1992-1994
warning: missing #header statement
test.t, line 3: warning: (...)? predicate in block with one alternative; will genera!
bash$ more test.t
expr: ;
variable:
#( VARIABLE
ID
( DOT ID
| UPARROW
| LBRACK
expr
( COMMA expr
)*
RBRACK
| COLON_COLON ID
)*
)
;
1.00B9:
Fixed support/ast.c so K&R C would compile it.
1.00B13:
Totally new, cool, simple tree rewriting mechanism. Not many bug fixes
Made enum def ignore #ifdef #else #endif etc... in #tokdefs
Added C++ support
Made h and lib directory
Changed name: AST_NONTRANSFORM_FIELDS -> AST_REQD_FIELDS
-def-tokens and -proto-file are not valid in C++ mode.
Changed name: AST -> SORAST in C and C++.
When you -def-tokens, it generates them ast consts inside class def.
Ref with classname::def.
All #[] constructor calls must be done in class A { ... } def of grammar
so it knows which to call. Else, put Classname:: on front manually.
1.00B14
[Not completed yet]
#label -> label; #label is no longer valid. Just use label to access
output node in transform mode. label_in is the input node (for token
references only).
ast_node, ast_dup -> shallowCopy() (user must define for transform
mode), deepCopy().
Fixed the C support functions for ASTs
#[] -> new SORAST
token() -> type() (sorry, but had to make more consistent)
setToken() -> setType() (you can just add type() { token(); } if you want).
Remove guessing gate on actions if no (...)?
Wildcard as root of tree made SOR bomb
All the token field refs in PCCTSAST.C -> type()
ASTBase::double_link didn't check for NULL pointers.
#if in action caused trouble.
made action buffer bigger (8k bytes)
SORCERER had a bug in that it did not update the tree result before
returning sometimes.
PCCTS_AST::ast_scan() is now non-virtual
C++ support functions like tail(), bottom(), etc... now use 'this'
pointer rather a passed argument.
Sorcerer spun when it found identifier+ instead of (identifier)+ in a
tree rule.
This version corresponds pretty to the state of the book.
1.00B15
All .C files are changed to .cpp.
ASTBase::dup() and ASTDoublyLinkedBase::dup() now call shallowCopy()
to actually duplicate a node. shallowCopy() can either call a copy
constructor or can just duplicate things right there.
C++ keyword "template" was used as a variable in some SORCERER files.
1.00b20 (2-Oct-1998)
Minor changes as reported in CHANGES_FROM_1.33 of the main pccts
distribution kit. Main reason for change in version number is to
indicate that it matches the new release of pccts 1.33MR15.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -