static public void start (InvarContext ctx) throws Exception
    {
        File path = new File(ctx.getRuleDir());
        //log("Path: " + path.toURI().toASCIIString());
        if (!path.exists())
            return;
        FilenameFilter filter = new FilenameFilter()
        {
            @Override
            public boolean accept (File dir, String name)
            {
                File f = new File(dir, name);
                if (f.getName().startsWith("."))
                    return false;
                if (f.getName().startsWith("_"))
                    return false;
                if (f.isDirectory())
                    return true;
                if (name.endsWith(TokensFromXml.suffix))
                    return true;
                return false;
            }
        };

        List<File> files = new ArrayList<File>();
        recursiveReadFile(files, path, filter);
        TokenNode root = StAX(ctx, files);
        root.freeze();

        TokenParser syntax = new TokenParser();
        syntax.init(root, ctx);
        syntax.parse(ctx);
    }