Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            string notation = "3!a15d";
            string value    = "EUR50000,00";

            notation = "1!a6!n3!a15d";
            value    = "A" + "123456" + "ABC" + "1234,";

            notation = "3*5a"; // ?
            value    = "A\nAA\nAAA";

            notation = "5n[/5n]";
            value    = "123/11";

            notation = "5!a";
            value    = "ABCDF";

            SwiftParser parser = new SwiftParser(notation);
            var         result = parser.parse(value);

            var bic = Bic.GetBic("HASPDEHHXXX");

            Console.WriteLine("Instution Code --> {0}", bic.InstitutionCode);
            Console.WriteLine("Country Code   --> {0}", bic.CountryCode);
            Console.WriteLine("LocationCode   --> {0}", bic.LocationCode);
            Console.WriteLine("BranchCode     --> {0}", bic.BranchCode);

            var bic1 = Bic.GetBic("HASPDEHH");


            Console.ReadLine();
        }
Ejemplo n.º 2
0
        public void WHEN_valid_Tag()
        {
            string notation = "3!a15d";
            string value    = "EUR50000,00";

            SwiftParser parser = new SwiftParser(notation);
            var         result = parser.parse(value);

            Assert.AreEqual(2, result.Count);
        }
Ejemplo n.º 3
0
        public void WHEN_valid_Tag2()
        {
            string notation = "1!a6!n3!a15d";
            string value    = "A123456ABC1234,";

            SwiftParser parser = new SwiftParser(notation);
            var         result = parser.parse(value);

            Assert.AreEqual(4, result.Count);
        }
Ejemplo n.º 4
0
        public void GetMt543_SwiftFileOutput_ReturnSwiftMessage()
        {
            string messageText = "";

            using (StreamReader stream = new StreamReader(@"..\..\..\SwiftFiles\Mt543"))
            {
                messageText = stream.ReadToEnd();
            }

            SwiftParser parser = new SwiftParser();
            MT543       result = Mt.Category5.MT543.Parse(messageText);

            Assert.AreEqual(messageText, result.ToString());
        }
Ejemplo n.º 5
0
        public static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("usage: SwiftTranslator.exe [input file] [output file]");
                Environment.Exit(1);
            }

            string input = File.ReadAllText(args[0]);

            var ms    = new MemoryStream(Encoding.UTF8.GetBytes(input));
            var lexer = new SwiftLexer(new AntlrInputStream(ms));

            var tokens = new CommonTokenStream(lexer);

            var parser = new SwiftParser(tokens);

            var tree = parser.file();

            var pastwk = new ParseTreeWalker();

            /*
             * Первым проходом по дереву проверим, не находятся ли два оператора на одной строке, не разделенные точкой
             * с запятой
             *
             * В рамках грамматики ANTLR это проверить проблематично, потому что для этого нужно обрабатывать в ней
             * символы переноса строки, а не пропускать их. Так как символы переноса строки в языке Swift разрешены
             * почти везде, это приведет к необходимости пихать всюду `NEWLINE*`, что приведет грамматику в нечитаемый
             * и неподдерживаемый вид, а также может привести к многочисленным трудноуловимым ошибкам вида "пропущено
             * `NEWLINE*`". В данном случае возможная альтернатива двухпроходной обработке синтаксического дерева
             * — предоварительная потока лексем на основе отдельной грамматики.
             */
            SwiftStatementPlacementCheckListener collisionChecker = new SwiftStatementPlacementCheckListener();

            pastwk.Walk(collisionChecker, tree);

            if (!collisionChecker.IsValid)
            {
                foreach (Tuple <int, int> collisionLoc in collisionChecker.CollisionLocations)
                {
                    Console.WriteLine($"Error 1889: At line {collisionLoc.Item1}, column {collisionLoc.Item2}: " +
                                      "two consecutive statements should be separated by a newline or a semicolon");
                }

                Environment.Exit(1);
            }

            pastwk.Walk(new SwiftMainListener(args[1]), tree);
        }
Ejemplo n.º 6
0
        public static void Main(string[] args)
        {
            if (args.Length != 2)
            {
                Console.WriteLine("usage: SwiftTranslator.exe [input file] [output file]");
                Environment.Exit(1);
            }

            string input = File.ReadAllText(args[0]);

            var ms    = new MemoryStream(Encoding.UTF8.GetBytes(input));
            var lexer = new SwiftLexer(new AntlrInputStream(ms));

            var tokens = new CommonTokenStream(lexer);

            var parser = new SwiftParser(tokens);

            var tree = parser.file();

            var pastwk = new ParseTreeWalker();

            pastwk.Walk(new SwiftSuperListener(args[1]), tree);
        }
Ejemplo n.º 7
0
        public void GetSwiftMessage_SwiftFileOutput_ReturnSwiftMessage()
        {
            string messageText = "";

            using (StreamReader stream = new StreamReader(@"..\..\..\SwiftFiles\GetSwiftMessage_SwiftFileOutput_ReturnSwiftMessage"))
            {
                messageText = stream.ReadToEnd();
            }
            SwiftMessage swiftMessage = new SwiftMessage()
            {
                Block1 = new SwiftBlock1()
                {
                    ApplicationId          = "F",
                    ServiceId              = "01",
                    LogicalTerminalAddress = "TESTBIC12XXX",
                    SessionNumber          = "0360",
                    SequenceNumber         = "105154",
                },
                Block2 = new SwiftBlock2Output()
                {
                    Direction             = Direction.Output,
                    MessageType           = "564",
                    InputTime             = "1057",
                    MessageInputReference = new MessageInputReference()
                    {
                        InputDate = "130214",
                        LogicalTerminalAddress = "TESTBIC34XXX",
                        SessionNumber          = "2626",
                        SequenceNumber         = "493828"
                    },
                    ReceiverOutputDate = "130214",
                    ReceiverOutputTime = "1757",
                    MessagePriority    = "N"
                },
                Block3 = new SwiftBlock3()
                {
                    new SwiftTag("103", "CAD"),
                    new SwiftTag("108", "2RDRQDHM3WO"),
                },
                Block4 = new SwiftBlock4()
                {
                    new SwiftTag("16R", "GENL"),
                    new SwiftTag("20C", ":CORP//1234567890123456"),
                    new SwiftTag("20C", ":SEME//9876543210987654"),
                    new SwiftTag("23G", "NEWM"),
                    new SwiftTag("22F", ":CAEV//INTR"),
                    new SwiftTag("22F", ":CAMV//MAND"),
                    new SwiftTag("98C", ":PREP//20220202105733"),
                    new SwiftTag("25D", ":PROC//ENTL"),
                    new SwiftTag("16S", "GENL"),
                    new SwiftTag("16R", "USECU"),
                    new SwiftTag("35B", "ISIN CH0101010101\r\n/XS/232323232\r\nFINANCIAL INSTRUMENT ACME"),
                    new SwiftTag("16R", "FIA"),
                    new SwiftTag("22F", ":MICO//A007"),
                    new SwiftTag("16S", "FIA"),
                    new SwiftTag("16R", "ACCTINFO"),
                    new SwiftTag("97A", ":SAFE//99999"),
                    new SwiftTag("94F", ":SAFE//NCSD/TESTBIC0ABC"),
                    new SwiftTag("93B", ":ELIG//FAMT/500000,"),
                    new SwiftTag("93B", ":SETT//FAMT/500000,"),
                    new SwiftTag("16S", "ACCTINFO"),
                    new SwiftTag("16S", "USECU"),
                    new SwiftTag("16R", "CADETL"),
                    new SwiftTag("98A", ":ANOU//20220113"),
                    new SwiftTag("98A", ":RDTE//20220113"),
                    new SwiftTag("69A", ":INPE//20220214/20220214"),
                    new SwiftTag("99A", ":DAAC//360"),
                    new SwiftTag("92K", ":INTR//UKWN"),
                    new SwiftTag("22F", ":ADDB//CAPA"),
                    new SwiftTag("16S", "CADETL"),
                    new SwiftTag("16R", "CAOPTN"),
                    new SwiftTag("13A", ":CAON//001"),
                    new SwiftTag("22F", ":CAOP//CASH"),
                    new SwiftTag("11A", ":OPTN//USD"),
                    new SwiftTag("17B", ":DFLT//Y"),
                    new SwiftTag("16R", "CASHMOVE"),
                    new SwiftTag("22H", ":CRDB//CRED"),
                    new SwiftTag("22H", ":CONT//ACTU"),
                    new SwiftTag("97A", ":CASH//89898"),
                    new SwiftTag("19B", ":ENTL//USD3333,"),
                    new SwiftTag("19B", ":TXFR//USD3333,"),
                    new SwiftTag("19B", ":NETT//USD3333,"),
                    new SwiftTag("98A", ":PAYD//20220214"),
                    new SwiftTag("98A", ":VALU//20220214"),
                    new SwiftTag("98A", ":EARL//20220214"),
                    new SwiftTag("92A", ":INTP//0,75"),
                    new SwiftTag("92A", ":TAXR//0,"),
                    new SwiftTag("16S", "CASHMOVE"),
                    new SwiftTag("16S", "CAOPTN"),
                    new SwiftTag("16R", "ADDINFO"),
                    new SwiftTag("70E", ":ADTX//PAYMENT UPON RECEIPT OF FUNDS - \r\nTIMELY PAYMENT EXPECTED"),
                    new SwiftTag("16S", "ADDINFO"),
                },
                Block5 = new SwiftBlock5()
                {
                    new SwiftTag("CHK", "C77F8E009597")
                }
            };
            SwiftParser parser = new SwiftParser();
            var         result = parser.GetSwiftMessage(messageText);

            Assert.AreEqual(result, swiftMessage);
        }