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); }