Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var engine = new SyntaxEngine();
              var file = new FileInfo("../../Scripts/1.essay");

              var context = engine.Start(file, false);

              var a = context.GetVariable("Business.Main.cust");

              context.SetVariableValue("Business.Main.cust", 90);

              var aa = context.GetVariable("Business.Main.cust");

              // string source = "naming Business{var a = 0; function Main(var x){return a + 32}}";
        }
        public SyntaxStateMachine(FileManager fileManager)
        {
            CurrentState = SyntaxMachineState.START;
            transitions  = new Dictionary <SyntaxStateTransition, SyntaxMachineState>
            {
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.INT), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.RETURN), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.FINAL), SyntaxMachineState.START },

                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.PRINT), SyntaxMachineState.PRINT },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.LET), SyntaxMachineState.LET },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.FOR), SyntaxMachineState.FOR },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.DIM), SyntaxMachineState.DIM },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.REMARK), SyntaxMachineState.REMARK },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.GO), SyntaxMachineState.GO },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.GOTO), SyntaxMachineState.GO },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.DATA), SyntaxMachineState.DATA },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.READ), SyntaxMachineState.READ },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.GOSUB), SyntaxMachineState.GOSUB },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.IF), SyntaxMachineState.IF },
                { new SyntaxStateTransition(SyntaxMachineState.START, TokenType.NEXT), SyntaxMachineState.NEXT },

                { new SyntaxStateTransition(SyntaxMachineState.PRINT, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.LET, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.FOR, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.DIM, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.REMARK, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.GO, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.DATA, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.READ, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.GOSUB, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.IF, TokenType.END), SyntaxMachineState.START },
                { new SyntaxStateTransition(SyntaxMachineState.NEXT, TokenType.END), SyntaxMachineState.START },
            };
            this.fileManager   = fileManager;
            this.variables     = new VariableTable();
            this.endCommand    = new EndCommand(fileManager);
            this.sequenceId    = new SequenceIdLabelCommand(this.variables, fileManager);
            this.returnCommand = new ReturnCommand(this.variables, fileManager);
            this.engine        = new SyntaxEngine(this.variables, fileManager);
        }