private void DeclareNewVariable(Identifier key, IResolvable value) { if (ReferenceTables.ContainsIdentifier(key)) { Exceptions.Add(new RedeclaredVariableWarning("Redeclared variable detected: " + key, key.SourceLocation)); } ReferenceTables.SetReference(key, value); }
public UserInterfaceVisitor(ReferenceTables referenceTables, IList <QLBaseException> exceptions, ObservableCollection <WidgetBase> elementsToDisplay, Action rebuildMethod) { _widgetFactory = new WidgetFactory(); _elementsToDisplay = elementsToDisplay; _rebuildMethod = rebuildMethod; ReferenceTables = referenceTables; Exceptions = exceptions; }
public void Visit(OrOperator node) { VisitBinary(node); ITerminalWrapper leftWrapper = ReferenceTables.GetValue(node.Left); ITerminalWrapper rightWrapper = ReferenceTables.GetValue(node.Right); ReferenceTables.SetValue(node, ((dynamic)leftWrapper) | ((dynamic)rightWrapper)); }
public void Visit(QuestionUnit node) { ReferenceTables.SetReference(node.Identifier, node.DataType); if (!ReferenceTables.ContainsReference(node.DataType)) { var wrapper = _terminalWrapperFactory.CreateWrapper(node.DataType); node.Value = wrapper; ReferenceTables.SetValue(node.DataType, wrapper); } }
public void Visit(Expression node) { //if expression is literal if (node.Child == null) { throw new Exception("Expression should have one and only one child"); } node.Child.Accept(this); ReferenceTables.SetValue(node, ReferenceTables.GetValue(node.Child)); }
private void SetRows(IList <IList <int> > rows) { var tableList = ReferenceTables.ToList(); for (int i = 0; i < tableList.Count; ++i) { rowList[i] = new List <int>(rows[i]); } if (rows.Count > 0) { rowCount = rows[0].Count(); } }
public void Visit(ControlUnit node) { node.Expression.Accept(this); YesnoWrapper conditionstate = (YesnoWrapper)ReferenceTables.GetValue(node.Expression); if (node.ConditionTrueBlock != null && conditionstate.Value.HasValue && conditionstate.Value.Value) { node.ConditionTrueBlock.Accept(this); } if (node.ConditionFalseBlock != null && conditionstate.Value.HasValue && !conditionstate.Value.Value) { node.ConditionFalseBlock.Accept(this); } }
public void Visit(ControlUnit node) { YesnoWrapper evaluatedResult = (YesnoWrapper)ReferenceTables.GetValueOrNull(node.Expression); _parentExpressionDidNotEvaluate = !evaluatedResult.ToBool(); if (node.ConditionTrueBlock != null) { node.ConditionTrueBlock.Accept(this); } _parentExpressionDidNotEvaluate = false; if (node.ConditionFalseBlock != null) { node.ConditionFalseBlock.Accept(this); } }
public void Visit(StatementUnit node) { ITerminalWrapper evaluatedResult = ReferenceTables.GetValueOrNull(node.Expression); node.Value = evaluatedResult; WidgetBase unitWrapper = _widgetFactory.GetWidget(node); unitWrapper.Visibility = _parentExpressionDidNotEvaluate ? Visibility.Collapsed : Visibility.Visible; int index = _elementsToDisplay.ToList().FindIndex(elem => elem.Unit.Identifier == unitWrapper.Unit.Identifier); if (index < 0) { _elementsToDisplay.Add(unitWrapper); } else { _elementsToDisplay[index].Visibility = unitWrapper.Visibility; } }
public void Visit(QuestionUnit node) { WidgetBase unitWrapper = _widgetFactory.GetWidget(node, ReferenceTables.GetValue(node.Identifier)); unitWrapper.Visibility = _parentExpressionDidNotEvaluate ? Visibility.Collapsed : Visibility.Visible; int index = _elementsToDisplay.ToList().FindIndex(elem => elem.Unit.Identifier == unitWrapper.Unit.Identifier); if (index < 0) { INotifyPropertyChanged nodeValue = node.Value as INotifyPropertyChanged; if (nodeValue != null) { nodeValue.PropertyChanged += (sender, args) => _rebuildMethod(); } _elementsToDisplay.Add(unitWrapper); } else { _elementsToDisplay[index].Visibility = unitWrapper.Visibility; } }
public void Visit(StatementUnit node) { node.Expression.Accept(this); ReferenceTables.SetReference(node.Identifier, node.Expression); }
public EvaluatorVisitor(ObservableCollection <QLBaseException> exceptions, ReferenceTables referenceTables) { _terminalWrapperFactory = new TerminalWrapperFactory(); Exceptions = exceptions; ReferenceTables = referenceTables; }
public void Visit(Text node) { ReferenceTables.SetValue(node, new TextWrapper(node)); }
public void Visit(Yesno node) { ReferenceTables.SetValue(node, new YesnoWrapper(node)); }
public void Visit(Number node) { ReferenceTables.SetValue(node, new NumberWrapper(node)); }
public TypeCheckerVisitor(ReferenceTables referenceTables, IList <QLBaseException> exceptions) { ReferenceTables = referenceTables; Exceptions = exceptions; }