|
@@ -1286,7 +1286,14 @@ PRODUCTIONS
|
|
|
Block<pn: SymTab.Name> (. VAR m2: SymTab.Name; .)
|
|
Block<pn: SymTab.Name> (. VAR m2: SymTab.Name; .)
|
|
|
= DeclSeq (. astBlkDecls := astDecl;
|
|
= DeclSeq (. astBlkDecls := astDecl;
|
|
|
astStmt := AST.NoNode; .)
|
|
astStmt := AST.NoNode; .)
|
|
|
- [ "BEGIN"
|
|
|
|
|
|
|
+ [ "BEGIN" (. (* an empty body is still a
|
|
|
|
|
+ body: mark it so Lower
|
|
|
|
|
+ does not read it as a
|
|
|
|
|
+ definition heading *)
|
|
|
|
|
+ IF astStmt = AST.NoNode THEN
|
|
|
|
|
+ astStmt :=
|
|
|
|
|
+ AST.MakeNode(AST.NkBlock)
|
|
|
|
|
+ END; .)
|
|
|
[ StatSeq ] ]
|
|
[ StatSeq ] ]
|
|
|
"END"
|
|
"END"
|
|
|
GetIdent<m2> (. IF NOT SymTab.Equal(pn, m2) THEN
|
|
GetIdent<m2> (. IF NOT SymTab.Equal(pn, m2) THEN
|