diff -Nru a/AspectC++/ClangIntroSema.cc b/AspectC++/ClangIntroSema.cc --- a/AspectC++/ClangIntroSema.cc 2017-03-09 18:51:49.000000000 +0100 +++ b/AspectC++/ClangIntroSema.cc 2017-03-12 21:09:09.500173341 +0100 @@ -257,7 +257,9 @@ // workaround: clang warns if skipped inline functions are used. In our case // this happens with inline functions that are not part of the project. // To avoid annoying messages they are suppressed here. +#if FRONTEND_CLANG >= 35 getDiagnostics().setSeverity(diag::warn_undefined_inline, diag::Severity::Ignored, SourceLocation()); +#endif RealActOnEndOfTranslationUnit(*this); // getASTContext().getTranslationUnitDecl ()->dump(); diff -Nru a/AspectC++/config/clang-3.4.mk b/AspectC++/config/clang-3.4.mk --- a/AspectC++/config/clang-3.4.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang-3.4.mk 2017-03-12 21:09:07.275173491 +0100 @@ -0,0 +1 @@ +LLVM_SYMBOLS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEbS5_ _ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE _ZN5clang4Sema25ActOnEndOfTranslationUnitEv _ZN5clang4Sema19canSkipFunctionBodyEPNS_4DeclE _ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersENS_16InClassInitStyleE _ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE _ZN5clang12Preprocessor3LexERNS_5TokenE _ZN5clang12Preprocessor9PeekAheadEj _ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEPPNS_16CXXBaseSpecifierEj _ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierES4_N4llvm15MutableArrayRefIPNS_21TemplateParameterListEEERbSH_S4_bNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEE _ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_S3_PNS_14IdentifierInfoES3_PNS_13AttributeListE _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorE diff -Nru a/AspectC++/config/clang-3.6.2.mk b/AspectC++/config/clang-3.6.2.mk --- a/AspectC++/config/clang-3.6.2.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang-3.6.2.mk 2017-03-12 21:09:07.279173491 +0100 @@ -0,0 +1 @@ +LLVM_SYMBOLS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEbS5_ _ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE _ZN5clang4Sema25ActOnEndOfTranslationUnitEv _ZN5clang4Sema19canSkipFunctionBodyEPNS_4DeclE _ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersENS_16InClassInitStyleE _ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE _ZN5clang12Preprocessor3LexERNS_5TokenE _ZN5clang12Preprocessor9PeekAheadEj _ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEPPNS_16CXXBaseSpecifierEj _ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierES4_N4llvm15MutableArrayRefIPNS_21TemplateParameterListEEERbSH_S4_bNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEEb _ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_S3_PNS_14IdentifierInfoES3_PNS_13AttributeListE _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorE diff -Nru a/AspectC++/config/clang-3.7.1.mk b/AspectC++/config/clang-3.7.1.mk --- a/AspectC++/config/clang-3.7.1.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang-3.7.1.mk 2017-03-12 21:09:07.275173491 +0100 @@ -0,0 +1 @@ +LLVM_SYMBOLS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEbS5_ _ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE _ZN5clang4Sema25ActOnEndOfTranslationUnitEv _ZN5clang4Sema19canSkipFunctionBodyEPNS_4DeclE _ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersENS_16InClassInitStyleE _ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE _ZN5clang12Preprocessor3LexERNS_5TokenE _ZN5clang12Preprocessor9PeekAheadEj _ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEPPNS_16CXXBaseSpecifierEj _ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierES4_N4llvm15MutableArrayRefIPNS_21TemplateParameterListEEERbSH_S4_bNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEEbPNS0_12SkipBodyInfoE _ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_S3_PNS_14IdentifierInfoES3_PNS_13AttributeListE _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorE diff -Nru a/AspectC++/config/clang-3.8.0.mk b/AspectC++/config/clang-3.8.0.mk --- a/AspectC++/config/clang-3.8.0.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang-3.8.0.mk 2017-03-12 21:09:07.275173491 +0100 @@ -0,0 +1 @@ +LLVM_SYMBOLS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEbS5_ _ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE _ZN5clang4Sema25ActOnEndOfTranslationUnitEv _ZN5clang4Sema19canSkipFunctionBodyEPNS_4DeclE _ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersENS_16InClassInitStyleE _ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE _ZN5clang12Preprocessor3LexERNS_5TokenE _ZN5clang12Preprocessor9PeekAheadEj _ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEN4llvm15MutableArrayRefIPNS_16CXXBaseSpecifierEEE _ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierES4_N4llvm15MutableArrayRefIPNS_21TemplateParameterListEEERbSH_S4_bNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEEbPNS0_12SkipBodyInfoE _ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_S3_PNS_14IdentifierInfoES3_PNS_13AttributeListERPNS_18UsingDirectiveDeclE _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS0_12SkipBodyInfoE diff -Nru a/AspectC++/config/clang-3.9.1.mk b/AspectC++/config/clang-3.9.1.mk --- a/AspectC++/config/clang-3.9.1.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang-3.9.1.mk 2017-03-12 21:09:07.279173491 +0100 @@ -0,0 +1 @@ +LLVM_SYMBOLS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarationsEPNS_5ScopeEPNS_4DeclENS_14SourceLocationEbS5_ _ZN5clang4Sema33ActOnFinishCXXMemberSpecificationEPNS_5ScopeENS_14SourceLocationEPNS_4DeclES3_S3_PNS_13AttributeListE _ZN5clang4Sema25ActOnEndOfTranslationUnitEv _ZN5clang4Sema19canSkipFunctionBodyEPNS_4DeclE _ZN5clang4Sema24ActOnCXXMemberDeclaratorEPNS_5ScopeENS_15AccessSpecifierERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS_4ExprERKNS_14VirtSpecifiersENS_16InClassInitStyleE _ZN5clang4Sema15ActOnDeclaratorEPNS_5ScopeERNS_10DeclaratorE _ZN5clang12Preprocessor3LexERNS_5TokenE _ZN5clang12Preprocessor9PeekAheadEj _ZN5clang4Sema19ActOnBaseSpecifiersEPNS_4DeclEN4llvm15MutableArrayRefIPNS_16CXXBaseSpecifierEEE _ZN5clang4Sema8ActOnTagEPNS_5ScopeEjNS0_10TagUseKindENS_14SourceLocationERNS_12CXXScopeSpecEPNS_14IdentifierInfoES4_PNS_13AttributeListENS_15AccessSpecifierES4_N4llvm15MutableArrayRefIPNS_21TemplateParameterListEEERbSH_S4_bNS_12ActionResultINS_9OpaquePtrINS_8QualTypeEEELb0EEEbPNS0_12SkipBodyInfoE _ZN5clang4Sema22ActOnStartNamespaceDefEPNS_5ScopeENS_14SourceLocationES3_S3_PNS_14IdentifierInfoES3_PNS_13AttributeListERPNS_18UsingDirectiveDeclE _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10DeclaratorEN4llvm15MutableArrayRefIPNS_21TemplateParameterListEEEPNS0_12SkipBodyInfoE diff -Nru a/AspectC++/config/clang.mk b/AspectC++/config/clang.mk --- a/AspectC++/config/clang.mk 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/clang.mk 2017-03-12 21:09:07.279173491 +0100 @@ -0,0 +1,39 @@ +# set makefile variables according to the installed Clang version + +# check whether llvm-config is available +ifeq ($(shell which $(LLVMCONF)),) + $(error FRONTEND is 'Clang', but LLVMCONF ($(LLVMCONF)) is not found) +endif + +LLVM_VERSION := $(shell $(LLVMCONF) --version) + +# check if the config file for this version exists +ifeq ($(wildcard config/clang-$(LLVM_VERSION).mk),) + $(error UNSUPPORTED Clang version '$(LLVM_VERSION)' used -- try 'make -C config clang') +endif + +include config/clang-$(LLVM_VERSION).mk + +# determine relevant interface variants +LLVM_INTERFACE := 38 # latest is default +ifneq ($(filter 3.4%, $(LLVM_VERSION)),) + LLVM_INTERFACE := 34 +else +ifneq ($(filter 3.5%, $(LLVM_VERSION))$(filter 3.6%, $(LLVM_VERSION)),) + LLVM_INTERFACE := 35 +else +ifneq ($(filter 3.7%, $(LLVM_VERSION)),) + LLVM_INTERFACE := 37 +else +ifneq ($(filter 3.8%, $(LLVM_VERSION))$(filter 3.9%, $(LLVM_VERSION)),) + LLVM_INTERFACE := 38 +endif +endif +endif +endif + +ifeq ($(_TARGET),macosx_x86_64) # on macOS the symbols have an additional '_' + LLVM_SYMBOLS := $(patsubst %, _%, $(LLVM_SYMBOLS)) + LLVM_SYMBOLS_SEMA := $(filter-out __ZN5clang12Preprocessor3LexERNS_5TokenE __ZN5clang12Preprocessor9PeekAheadEj, $(LLVM_SYMBOLS)) + LLVM_SYMBOLS_LEX := $(filter __ZN5clang12Preprocessor3LexERNS_5TokenE __ZN5clang12Preprocessor9PeekAheadEj, $(LLVM_SYMBOLS)) +endif diff -Nru a/AspectC++/config/Makefile b/AspectC++/config/Makefile --- a/AspectC++/config/Makefile 1970-01-01 01:00:00.000000000 +0100 +++ b/AspectC++/config/Makefile 2017-03-12 21:09:07.275173491 +0100 @@ -0,0 +1,52 @@ +# +# makefile for generating a config file for the installed Clang version +# + +# ****************************** +# * S E T T I N G S * +# ****************************** + +# check whether llvm-config is available +ifeq ($(shell which $(LLVMCONF)),) + $(error LLVMCONF ($(LLVMCONF)) is not found) +endif + +LLVM_VERSION := $(shell $(LLVMCONF) --version) + +LLVM_LIBDIR := $(shell $(LLVMCONF) --libdir) +ifeq ($(_TARGET),win_x86_64) # handle '\' in path name + LLVM_LIBDIR := $(subst \,/,$(LLVM_LIBDIR)) +endif +LLVM_LIBS := $(LLVM_LIBDIR)/libclang*.a +# These functions need to be wrapped: parameters omitted to be more version independent +LLVM_KEY_COUNT := 12 +LLVM_KEYS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarations \ + _ZN5clang4Sema33ActOnFinishCXXMemberSpecification \ + _ZN5clang4Sema25ActOnEndOfTranslationUnit \ + _ZN5clang4Sema19canSkipFunctionBody \ + _ZN5clang4Sema24ActOnCXXMemberDeclarator \ + _ZN5clang4Sema15ActOnDeclarator \ + _ZN5clang12Preprocessor3Lex \ + _ZN5clang12Preprocessor9PeekAhead \ + _ZN5clang4Sema19ActOnBaseSpecifiers \ + _ZN5clang4Sema8ActOnTag \ + _ZN5clang4Sema22ActOnStartNamespaceDef \ + _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10Declarator +ifeq ($(_TARGET),macosx_x86_64) # on macOS the symbols have an additional '_' + LLVM_KEYS := $(patsubst %, _%, $(LLVM_KEYS)) +endif + +# command to generate LLVM_SYMBOLS (a recursive variable!) +LLVM_SYMBOLS_GEN = $(foreach LLVM_KEY, $(LLVM_KEYS), $(filter _%, $(shell nm --defined-only $(LLVM_LIBS) | grep "T $(LLVM_KEY)"))) + +# ****************************** +# * R U L E S * +# ****************************** + +clang: clang-$(LLVM_VERSION).mk + +# find the exact symbols using the keys in the clang libraries +clang-$(LLVM_VERSION).mk: + @echo Generating config file for Clang $(LLVM_VERSION) + @echo LLVM_SYMBOLS := $(LLVM_SYMBOLS_GEN) > $@ + Les fichiers binaires a/AspectC++/doc/QuickRef/ac++quickref.pdf et b/AspectC++/doc/QuickRef/ac++quickref.pdf sont différents diff -Nru a/AspectC++/Makefile b/AspectC++/Makefile --- a/AspectC++/Makefile 2017-03-09 18:51:49.000000000 +0100 +++ b/AspectC++/Makefile 2017-03-12 21:09:09.502173341 +0100 @@ -29,67 +29,10 @@ LIBXML2_INC := `xml2-config --cflags` LIBXML2_LIB := `xml2-config --libs` -# Check Clang version +# Check Clang version and define all necessary symbols (LLVM_*) ifneq ($(MAKECMDGOALS),clean) ifeq ($(FRONTEND),Clang) - ifeq ($(shell which $(LLVMCONF)),) - $(error FRONTEND is 'Clang', but LLVMCONF ($(LLVMCONF)) is not found) - endif - LLVM_VERSION := $(shell $(LLVMCONF) --version) - LLVM_LIBDIR := $(shell $(LLVMCONF) --libdir) - ifeq ($(_TARGET),win_x86_64) # handle '\' in path name - LLVM_LIBDIR := $(subst \,/,$(LLVM_LIBDIR)) - endif - LLVM_LIBS := $(LLVM_LIBDIR)/libclang*.a - # These functions need to be wrapped: parameters omitted to be more version independent - LLVM_KEY_COUNT := 12 - LLVM_KEYS := _ZN5clang4Sema31ActOnStartCXXMemberDeclarations \ - _ZN5clang4Sema33ActOnFinishCXXMemberSpecification \ - _ZN5clang4Sema25ActOnEndOfTranslationUnit \ - _ZN5clang4Sema19canSkipFunctionBody \ - _ZN5clang4Sema24ActOnCXXMemberDeclarator \ - _ZN5clang4Sema15ActOnDeclarator \ - _ZN5clang12Preprocessor3Lex \ - _ZN5clang12Preprocessor9PeekAhead \ - _ZN5clang4Sema19ActOnBaseSpecifiers \ - _ZN5clang4Sema8ActOnTag \ - _ZN5clang4Sema22ActOnStartNamespaceDef \ - _ZN5clang4Sema23ActOnStartOfFunctionDefEPNS_5ScopeERNS_10Declarator - ifeq ($(_TARGET),macosx_x86_64) # on macOS the symbols have an additional '_' - LLVM_KEYS := $(patsubst %, _%, $(LLVM_KEYS)) - endif - # find the exact symbols using the keys in the clang libraries - LLVM_SYMBOLS := $(foreach LLVM_KEY, $(LLVM_KEYS), $(filter _%, $(shell nm --defined-only $(LLVM_LIBS) | grep "T $(LLVM_KEY)"))) - # determine relevant interface variants - LLVM_INTERFACE := 38 # latest is default - ifneq ($(filter 3.4%, $(LLVM_VERSION)),) - LLVM_INTERFACE := 34 - else - ifneq ($(filter 3.5%, $(LLVM_VERSION))$(filter 3.6%, $(LLVM_VERSION)),) - LLVM_INTERFACE := 35 - else - ifneq ($(filter 3.7%, $(LLVM_VERSION)),) - LLVM_INTERFACE := 37 - else - ifneq ($(filter 3.8%, $(LLVM_VERSION))$(filter 3.9%, $(LLVM_VERSION)),) - LLVM_INTERFACE := 38 - endif - endif - endif - endif - LLVM_SUPPORTED_VERSIONS := 3.4 3.4svn 3.4.2 3.6.2 3.7.1 3.8.0 3.9.1 - ifneq ($(filter $(LLVM_SUPPORTED_VERSIONS), $(LLVM_VERSION)),) - $(info Clang version $(LLVM_VERSION): Fine) - else - $(warning Warning: UNSUPPORTED Clang version $(LLVM_VERSION) used) - endif - ifneq ($(LLVM_KEY_COUNT), $(words $(LLVM_SYMBOLS))) - $(error Incompatible Clang version '$(LLVM_VERSION)': Not all wrapped symbols defined!) - endif - ifeq ($(_TARGET),macosx_x86_64) # on macOS the symbols have an additional '_' - LLVM_SYMBOLS_SEMA := $(filter-out __ZN5clang12Preprocessor3LexERNS_5TokenE __ZN5clang12Preprocessor9PeekAheadEj, $(LLVM_SYMBOLS)) - LLVM_SYMBOLS_LEX := $(filter __ZN5clang12Preprocessor3LexERNS_5TokenE __ZN5clang12Preprocessor9PeekAheadEj, $(LLVM_SYMBOLS)) - endif + include config/clang.mk endif endif @@ -205,6 +148,8 @@ DEPDIR := DepFiles/$(TARGET) DEPS := $(addprefix $(DEPDIR)/,$(CCSOURCES:.cc=.d)) +CONFIGDIR := config + DIRS := $(OBJECTDIR) $(DEPDIR) $(BINDIR) # ****************************** @@ -269,15 +214,10 @@ .PHONY: all test clean cleanall example examplerun exampleclean \ showtarget doxygen doxygen-clean libacmodel - - # ****************************** # * R U L E S * # ****************************** - - - $(DIRS) : @mkdir -p $@ diff -Nru a/AspectC++/PointCutExprParser.cc b/AspectC++/PointCutExprParser.cc --- a/AspectC++/PointCutExprParser.cc 2017-03-09 18:51:49.000000000 +0100 +++ b/AspectC++/PointCutExprParser.cc 2017-03-12 21:09:07.279173491 +0100 @@ -178,10 +178,12 @@ case PCTTOK_ARGS: case PCTTOK_RESULT: case PCTTOK_CFLOW: + string pct_func = string (results.start, results.end); unsigned long tt = results.id; lexertl::lookup (state_machine_, results); if (results.id != PCTTOK_OPEN) - return 0; + throw PCEParserException(string("Pointcut function '") + pct_func + + "' requires opening bracket"); lexertl::lookup (state_machine_, results); vector<PointCutExpr*> arguments; while (true) { diff -Nru a/Puma/src/aspects/TraceSyntax.ah b/Puma/src/aspects/TraceSyntax.ah --- a/Puma/src/aspects/TraceSyntax.ah 2017-03-09 18:51:49.000000000 +0100 +++ b/Puma/src/aspects/TraceSyntax.ah 2017-03-12 21:09:14.227173022 +0100 @@ -105,14 +105,14 @@ execution ("%::CTree * Puma::%::%()") : before () { trace_rule (JoinPoint::signature ()); } - advice within (syntax ()) && args (result, "%::Syntax::State") && - execution ("bool Puma::%::accept(...)") : before (Puma::CTree *result) { - trace (result ? "ACCEPT" : "FAILED", -1); + advice within (syntax ()) && args (res, "%::Syntax::State") && + execution ("bool Puma::%::accept(...)") : before (Puma::CTree *res) { + trace (res ? "ACCEPT" : "FAILED", -1); } - advice within (syntax ()) && args (result) && - execution ("% Puma::%::accept(...)") : before (Puma::CTree *result) { - trace (result ? "ACCEPT" : "FAILED", -1); + advice within (syntax ()) && args (res) && + execution ("% Puma::%::accept(...)") : before (Puma::CTree *res) { + trace (res ? "ACCEPT" : "FAILED", -1); } advice within (syntax ()) && execution ("% Puma::%::locate_token()") : after () @@ -125,8 +125,10 @@ args (state) */ : around (/* TokenProvider::State state */) { bool diff = (*tjp->arg<0>() != tjp->target ()->get_state ()); tjp->proceed (); - if (diff ) - trace (**tjp->arg<0>(), "RESET", "INPUT END"); + if (diff) { + Puma::TokenInfo& info = **tjp->arg<0>(); + trace (info._token, "RESET", "INPUT END"); + } } // tracing for token provider calls within skip functions @@ -154,7 +156,7 @@ skipping++; if (trace_mode ()) tos () << "SKIP: "; thisJoinPoint->action ().trigger (); - if (trace_mode ()) tos () << endl; + if (trace_mode ()) tos () << std::endl; skipping--; } @@ -162,7 +164,7 @@ skipping++; if (trace_mode ()) tos () << "SKIP_BLOCK: "; thisJoinPoint->action ().trigger (); - if (trace_mode ()) tos () << endl; + if (trace_mode ()) tos () << std::endl; skipping--; } }; diff -Nru a/Puma/src/parser/Tracing.cc b/Puma/src/parser/Tracing.cc --- a/Puma/src/parser/Tracing.cc 2017-03-09 18:51:49.000000000 +0100 +++ b/Puma/src/parser/Tracing.cc 2017-03-12 21:09:14.097173031 +0100 @@ -25,7 +25,7 @@ namespace Puma { -ostream &Tracing::tos () const { +std::ostream &Tracing::tos () const { return *_tos; } @@ -42,7 +42,7 @@ if (quote) *_tos << "`"; *_tos << rule; if (quote) *_tos << "'"; - *_tos << endl; + *_tos << std::endl; if (n == 1) _tdepth += n; }