vim: Cleanup word matching code
go: Don't create new tokens when not necessary
go: Get rid of goto in parseConstTypeVar()

Thanks to Colomban Wendling for various improvements.
Merge pull request #168 from techee/go-improvements
Print a suggestion for running autoreconf if config.h.in is not found

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Small rewording of the warning for when `autoheader` was not run
Introduce new test harness named "noise"

"noise" runs ctags with inputs derived from input.* files under Units.
"noise" is designed for testing a something boundary in parsing code.

Here "deriving" means applying following operation to
the the original input:

    reduction: deleting one byte at a position, or

    injection: inserting something one byte at a position

The position is chosen from the beginning to the end of file; for each
position in the range "noise" applies one of the operations to generate
the derived input file and run ctags with the input.

The injected byte is chosen from charset [^b-zA-Z1-9]; for each byte
in charset "noise" applies the injections to generate the
derived input file and run ctags with the input.

Consider the original input is "abc".
The derived input are

    reduction: "bc"
    reduction: "ac"
    reduction: "ab"
    injection: "aabc"
    injection: "aabc"
    injection: "abac"
    injection: "abca"
    injection: "0abc"
    injection: "a0bc"
    injection: "ab0c"
    injection: "abc0"
    injection: "!abc"
    injection: "a!bc"
    injection: "ab!c"
    injection: "abc!"
    injection: "@abc"
    injection: "a@bc"
    injection: "ab@c"
    injection: "abc@"
    ...

When ctags enters an infinite loop (detected by 2 seconds
timeout) or exits with non-zero status for a derived input,
"noise" recognizes the derived input triggers a bug of
ctags; "noise" runs "shrink" internally to find a minimal
input for reproducing the bug; and stops.

Following an example session of noise:

    $ misc/units noise --run-shrink --languages=Ada Units | tee /tmp/ADA
    Noised-fuzzing (Ada)
    ------------------------------------------------------------
    Testing cases derived from: Units/generalized_stack.ads.t/input.ads
    ............................................................
    oooooooooooooooooooooooooooooooooooooooooooooooooo -  50/1764
    ... <snipped>
    oooooooooooooooooooooooooooooooooooooooooooooooooo -  1700/1764
    ooooooooooooooooooooooooooooooo!                   -  1731/1764
    [unexpected-status(1) Ada] Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp
    Shrinking Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as Ada
    ............................................................
    [0       1763]...failed(139)
    ... <snipped>
    [383     1542]...failed(139)
    [384     1542]...ok(0)
    Minimal badinput input: Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp
    ............................................................
    Ada.Finalization; use Ada.Finalization;

    package GenStack is
	-- This is the stack type.
	type Stack is new Controlled with private;

	-- This is the base type for nodes.  Client packages must derive their
	-- nodes from StackData.  Since it comes from Controlled, the user can
	-- override the Initialize, Adjust, and Finalize methods as needed.
	type StackData is new Controlled with null record;

	-- Initialization operations.
	procedure Initialize(S: in out Stack);
	procedure Adjust(S: in out Stack);
	procedure Finalize(S: in out Stack);

	-- Stack operations.
	procedure Push(S: in out Stack; D: StackData'class);
	procedure Pop(S: in out Stack; D: in out StackData'class);
	procedure Top(S: Stack; Data: in out StackData'class);
	function Empty(S: Stack) return Boolean;

	private
	-- Pointer to the node type.
	type Node;
	type Node_Ptr is access Node;

	-- Here is the generalized stack itself.  We would just make it the
	-- pointer itself, but it needs to be a record so it can be in a with.
	type Stack is new Controlled with record
	    Head: Node_Ptr;
	end record;

	-

In this example Ada parser is tested.
"noise" pick up Units/generalized_stack.ads.t/input.ads as the original
input and repeats reductions for each position.

       oooooooooooooooooooooooooooooooooooooooooooooooooo -  50/1764

This line means the size of the original input is 1764 and
reductions at the position from 0 to 50 are done. Here "-" means
reduction. "o" means ctags exits with 0 status.
A line for injections is like:

       oooooooooooooooooooooooooooooooooooooooooooooooooo +@ 50/708

Here "+" means an injection. "@" is injected byte.

       ooooooooooooooooooooooooooooooo!                   -  1731/1764

This means ctags exits unexpected status when reducing a byte at 1731.

    Shrinking Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as Ada
    ............................................................
    [0       1763]...failed(139)
    ... <snipped>
    [383     1542]...failed(139)
    [384     1542]...ok(0)
    Minimal badinput input: Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp
    ............................................................
    Ada.Finalization; use Ada.Finalization;

"shrink" runs Units/generalized_stack.ads.t/NOISE-INPUT-REDUCED-1731-33.tmp as input
and writes the shrunk input to Units/generalized_stack.ads.t/NOISE-SHRINK-REDUCED-1731-33.tmp.
There is no meaning in "33".

Unlink "fuzz", "noise" chooses the original input for derivations only if ctags --guess-language
for the original is the same as the target language for testing; "Ada" is the target language
above example output.

TODO:

	- Write docs/*.rst.
	- Integrate to testing.mak

Signed-off-by: Masatake YAMATO <yamato@redhat.com>
Merge pull request #172 from b4n/autoconf-warning-rewording

Small rewording of the warning for when `autoheader` was not run
go: Eliminate some more goto statements
go: Simplify skipToMatched()

* remove unnecessary assignments in switch
* delete part of comment copied from a different parser
* remove redundant if check
* simplify while condition to only check nest level and EOF
ada: Fix a crash on incomplete input

Found by `noise`.
Merge pull request #173 from techee/goto-removal

go: Eliminate some more goto statements and simplify some code.
sh: test functions starting with dash/underscore
test.units: use TIMEOUT=5 by default

I think it cannot hurt to timeout by default, and 5 seconds should be
long enough for the unit tests, which are meant to be small.
docs: Add my personal info
vim: Skip matched word on the caller side rather than the callee one
vim: Do not reject augroups names prefixed with "end"

Only "end" as a whole has a special meaning, not as a prefix.
Merge pull request #176 from blueyed/use-default-timeout

test.units: use TIMEOUT=5 by default
Merge pull request #146 from b4n/vim/simpler-word-match

vim: Cleanup word matching code
units: Fix timeout increase recursion when using valgrind

run_tcase() was increasing $WITH_TIMEOUT global value each time it was called.
In situation where many test cases are run the timeout value could even
overflow, becoming negative.