From f4fe2e932cc8f445e9e1bc52863e11b669e3afc9 Mon Sep 17 00:00:00 2001 From: "Frank Ch. Eigler" Date: Wed, 3 Mar 2010 00:28:22 -0500 Subject: PR11004: try / catch error-handling script syntax * parse.h (try_block): New class. Update basic visitors. * staptree.cxx: Implement basic visitors. * parse.cxx (expect_kw): Fix to actually look for keywords. (parse_try_block): New function. (lexer ctor): Designate 'try' and 'catch' as keywords. * elaborate.cxx (dead_assignment_remover, dead_statmtexpr_remover): Optimize. (other visitors): Implement. * translate.cxx (c_unparser): Implement via super-handy __local__ labels. (emit_probe, emit_function): Make outer out: label also __local__. * testsuite/buildok/fortyone.stp, semko/fortynine.stp, systemtap.base/trycatch.exp: Test it. * NEWS, doc/langref.txt, stap.1.in: Document it. --- parse.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'parse.h') diff --git a/parse.h b/parse.h index 8f34442a..2b2dd3ac 100644 --- a/parse.h +++ b/parse.h @@ -102,6 +102,7 @@ struct embeddedcode; struct probe_point; struct literal; struct block; +struct try_block; struct for_loop; struct statement; struct if_statement; @@ -175,6 +176,7 @@ private: // nonterminals probe_point* parse_probe_point (); literal* parse_literal (); block* parse_stmt_block (); + try_block* parse_try_block (); statement* parse_statement (); if_statement* parse_if_statement (); for_loop* parse_for_loop (); -- cgit