diff options
Diffstat (limited to 'libfrontend-elements/examples')
-rw-r--r-- | libfrontend-elements/examples/diagnostic/driver.cxx | 29 | ||||
-rw-r--r-- | libfrontend-elements/examples/diagnostic/makefile | 48 | ||||
-rw-r--r-- | libfrontend-elements/examples/makefile | 16 |
3 files changed, 93 insertions, 0 deletions
diff --git a/libfrontend-elements/examples/diagnostic/driver.cxx b/libfrontend-elements/examples/diagnostic/driver.cxx new file mode 100644 index 0000000..edb8a18 --- /dev/null +++ b/libfrontend-elements/examples/diagnostic/driver.cxx @@ -0,0 +1,29 @@ +// file : examples/diagnostic/driver.cxx +// author : Boris Kolpackov <boris@kolpackov.net> +// copyright : Copyright (c) 2005-2010 Boris Kolpackov +// license : GNU GPL v2 + exceptions; see accompanying LICENSE file + +#include <cult/types.hxx> + +#include <frontend-elements/diagnostic.hxx> + +using namespace Cult::Types; +using namespace FrontendElements::Diagnostic; + +// Some ideas: The first letter (`e') in `epsyntx' is for error. +// The second letter identifies part of the system (p - parser). +// +// +Error epsyntx ("EPSYNTX"); + +Warning wscoer ("WS001"); + +Stream dout; + +Int +main () +{ + dout << epsyntx << "foo.cxx" << 1UL << 12UL << "syntax error"; + + dout << wscoer << "foo.cxx" << 2UL << "type coercion"; +} diff --git a/libfrontend-elements/examples/diagnostic/makefile b/libfrontend-elements/examples/diagnostic/makefile new file mode 100644 index 0000000..0945a81 --- /dev/null +++ b/libfrontend-elements/examples/diagnostic/makefile @@ -0,0 +1,48 @@ +# file : examples/diagnostic/makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2005-2010 Boris Kolpackov +# license : GNU GPL v2; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../../build/bootstrap.make + +cxx_tun := driver.cxx +cxx_obj := $(addprefix $(out_base)/,$(cxx_tun:.cxx=.o)) +cxx_od := $(cxx_obj:.o=.o.d) + +frontend_elements.l := $(out_root)/frontend-elements/frontend-elements.l +frontend_elements.l.cpp-options := $(out_root)/frontend-elements/frontend-elements.l.cpp-options + +diagnostic := $(out_base)/diagnostic +clean := $(out_base)/.clean + + +# Build. +# +$(diagnostic): $(cxx_obj) $(frontend_elements.l) + +$(cxx_obj) $(cxx_od): $(frontend_elements.l.cpp-options) + +$(call include-dep,$(cxx_od)) + + +# Convenience alias for default target. +# +$(out_base)/: $(diagnostic) + + +# Clean. +# +$(clean): $(diagnostic).o.clean \ + $(addsuffix .cxx.clean,$(cxx_obj)) \ + $(addsuffix .cxx.clean,$(cxx_od)) + + +# How to. +# +$(call include,$(bld_root)/cxx/o-e.make) +$(call include,$(bld_root)/cxx/cxx-o.make) +$(call include,$(bld_root)/cxx/cxx-d.make) + +# Dependencies. +# +$(call import,$(src_root)/frontend-elements/makefile) diff --git a/libfrontend-elements/examples/makefile b/libfrontend-elements/examples/makefile new file mode 100644 index 0000000..7d7abd3 --- /dev/null +++ b/libfrontend-elements/examples/makefile @@ -0,0 +1,16 @@ +# file : examples/makefile +# author : Boris Kolpackov <boris@kolpackov.net> +# copyright : Copyright (c) 2005-2010 Boris Kolpackov +# license : GNU GPL v2; see accompanying LICENSE file + +include $(dir $(lastword $(MAKEFILE_LIST)))../build/bootstrap.make + +default := $(out_base)/ +clean := $(out_base)/.clean + +examples := $(out_base)/diagnostic + +$(default): $(addsuffix /,$(examples)) +$(clean): $(addsuffix /.clean,$(examples)) + +$(foreach e,$(subst $(out_base),$(src_base),$(examples)),$(call import,$e/makefile)) |