<commit_before>/* =========================================================================

    KSPSyntaxParser.java
    Copyright (c) R-Koubou

   ======================================================================== */

package net.rkoubou.kspparser;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintStream;
import java.io.Writer;

import org.kohsuke.args4j.CmdLineParser;

import net.rkoubou.kspparser.analyzer.AnalyzeErrorCounter;
import net.rkoubou.kspparser.analyzer.SemanticAnalyzer;
import net.rkoubou.kspparser.analyzer.SymbolCollector;
import net.rkoubou.kspparser.javacc.generated.ASTRootNode;
import net.rkoubou.kspparser.javacc.generated.KSPParser;
import net.rkoubou.kspparser.obfuscator.Obfuscator;
import net.rkoubou.kspparser.options.CommandlineOptions;;

/**
 * KSPSyntaxParser
 */
public class KSPSyntaxParser
{
    //////////////////////////////////////////////////////////////////////////
    /**
     * アプリケーション・エントリポイント
     */
    static public void main( String[] args ) throws Throwable
    {
        PrintStream stdout = null;
        PrintStream stderr = null;
        try
        {
            // -Dkspparser.stdout.encoding=#### の指定があった場合、そのエンコードを標準出力・エラーに再設定する
            if( System.getProperty( "kspparser.stdout.encoding" ) != null )
            {
                String encoding = System.getProperty( "kspparser.stdout.encoding" );
                stdout = new PrintStream( System.out, true, encoding );
                stderr = new PrintStream( System.err, true, encoding );
                System.setOut( stdout );
                System.setErr( stderr );
            }
            // コマンドライン引数の解析
            CmdLineParser cmdLineParser = CommandlineOptions.setup( args );
            if( CommandlineOptions.options.sourceFile == null )
            {
                cmdLineParser.printUsage( System.err );
                System.err.println();
                System.exit( 1 );
                return;
            }

            // プログラム解析
            File file            = new File( CommandlineOptions.options.sourceFile );
            KSPParser p          = new KSPParser( file );

            // 構文解析フェーズ
            ASTRootNode rootNode = p.analyzeSyntax();
            if( rootNode == null || AnalyzeErrorCounter.hasError() )
            {
                return;
            }

            // シンボル収集フェーズ
            SymbolCollector symbolCollector = new SymbolCollector( rootNode );
            AnalyzeErrorCounter.reset();
            symbolCollector.analyze();
            if( AnalyzeErrorCounter.hasError() )
            {
                System.exit( 1 );
                return;<commit_msg>プロセス終了コードの追記<commit_after>/* =========================================================================

    KSPSyntaxParser.java
    Copyright (c) R-Koubou

   ======================================================================== */

package net.rkoubou.kspparser;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintStream;
import java.io.Writer;

import org.kohsuke.args4j.CmdLineParser;

import net.rkoubou.kspparser.analyzer.AnalyzeErrorCounter;
import net.rkoubou.kspparser.analyzer.SemanticAnalyzer;
import net.rkoubou.kspparser.analyzer.SymbolCollector;
import net.rkoubou.kspparser.javacc.generated.ASTRootNode;
import net.rkoubou.kspparser.javacc.generated.KSPParser;
import net.rkoubou.kspparser.obfuscator.Obfuscator;
import net.rkoubou.kspparser.options.CommandlineOptions;;

/**
 * KSPSyntaxParser
 */
public class KSPSyntaxParser
{
    //////////////////////////////////////////////////////////////////////////
    /**
     * アプリケーション・エントリポイント
     */
    static public void main( String[] args ) throws Throwable
    {
        PrintStream stdout = null;
        PrintStream stderr = null;
        try
        {
            // -Dkspparser.stdout.encoding=#### の指定があった場合、そのエンコードを標準出力・エラーに再設定する
            if( System.getProperty( "kspparser.stdout.encoding" ) != null )
            {
                String encoding = System.getProperty( "kspparser.stdout.encoding" );
                stdout = new PrintStream( System.out, true, encoding );
                stderr = new PrintStream( System.err, true, encoding );
                System.setOut( stdout );
                System.setErr( stderr );
            }
            // コマンドライン引数の解析
            CmdLineParser cmdLineParser = CommandlineOptions.setup( args );
            if( CommandlineOptions.options.sourceFile == null )
            {
                cmdLineParser.printUsage( System.err );
                System.err.println();
                System.exit( 1 );
                return;
            }

            // プログラム解析
            File file            = new File( CommandlineOptions.options.sourceFile );
            KSPParser p          = new KSPParser( file );

            // 構文解析フェーズ
            ASTRootNode rootNode = p.analyzeSyntax();
            if( rootNode == null || AnalyzeErrorCounter.hasError() )
            {
                System.exit( 1 );
                return;
            }

            // シンボル収集フェーズ
            SymbolCollector symbolCollector = new SymbolCollector( rootNode );
            AnalyzeErrorCounter.reset();
            symbolCollector.analyze();
            if( AnalyzeErrorCounter.hasError() )
            {
                System.exit( 1 );
                return;
{'fraction_non_alphanumeric': 0.16968114861085212, 'fraction_numerical': 0.0013052396046988625, 'mean_word_length': 1.904168922577152, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1557501', 'n_tokens_mistral': 1636, 'n_tokens_neox': 1537, 'n_words': 249}