The StaDyn Programming Language
Source code documentation of StaDyn, a hybrid static and dynamic typing language.
AstOperations.cs
Go to the documentation of this file.
1 using AST;
2 using ErrorManagement;
3 using System;
4 
5 
6 namespace AST.Operations {
10  public abstract class AstOperation {
11  public virtual object Exec(AstNode a, object arg) { return ReportErrorSafe("AstNode", a); }
12  public virtual object Exec(BaseCallExpression b, object arg) { return Exec((Expression)b, arg); }
13  public virtual object Exec(BaseExpression b, object arg) { return Exec((Expression)b, arg); }
14  public virtual object Exec(Declaration d, object arg) { return Exec((Statement)d, arg); }
15  public virtual object Exec(Definition d, object arg) { return Exec((IdDeclaration)d, arg); }
16  public virtual object Exec(Expression e, object arg) { return Exec((Statement)e, arg); }
17  public virtual object Exec(FieldAccessExpression f, object arg) { return Exec((Expression)f, arg); }
18  public virtual object Exec(IdentifierExpression i, object arg) { return Exec((Expression)i, arg); }
19  public virtual object Exec(NewExpression n, object arg) { return Exec((BaseCallExpression)n, arg); }
20  public virtual object Exec(SingleIdentifierExpression s, object arg) { return Exec((IdentifierExpression)s, arg); }
21  public virtual object Exec(Statement s, object arg) { return Exec((AstNode)s, arg); }
22  public virtual object Exec(InvocationExpression i, object arg) { return Exec((BaseCallExpression)i, arg); }
23 
24  public virtual object ReportErrorSafe(String operation, AstNode astNode) {
25  if (astNode == null)
26  return ReportError(operation, new Location());
27  return ReportError(operation, astNode.getText(), astNode.Location != null ? astNode.Location : new Location());
28  }
29 
30  public virtual object ReportError(String operation, String element, Location location) {
31  ErrorManager.Instance.NotifyError(new InternalOperationInterfaceError(operation, location));
32  return null;
33  }
34  public virtual object ReportError(String operation, Location location) {
35  ErrorManager.Instance.NotifyError(new InternalOperationInterfaceError(operation, location));
36  return null;
37  }
38 
39 
40  }
41 }
Encapsulates a 'base' expression.
virtual object Exec(InvocationExpression i, object arg)
Abstract class encapsulate a programming language expression.
Definition: Expression.cs:37
Encapsulates a name expression of our programming language.
virtual object Exec(BaseExpression b, object arg)
virtual object ReportError(String operation, Location location)
virtual object Exec(NewExpression n, object arg)
Encapsulates the expression to access a field.
virtual object ReportErrorSafe(String operation, AstNode astNode)
virtual object Exec(Definition d, object arg)
Encapsulates a invocation expression.
This class encapsulates a location in a specific file. Implements an Inmutable pattern. So it can be used in any context, that is his internal fields never change.
Definition: Location.cs:24
Abstract class represents a programming language statement.
Definition: Statement.cs:30
Encapsulates a definition.
Definition: Definition.cs:36
This class represent the entry wnen sending a message to an operation object. derived from AstNode ...
virtual object Exec(BaseCallExpression b, object arg)
Encapsulates a identifier expression of our programming language.
virtual object Exec(Statement s, object arg)
virtual object Exec(SingleIdentifierExpression s, object arg)
virtual object Exec(Expression e, object arg)
Abstract class for all nodes that compounds the abstract syntax tree.
Definition: AstNode.cs:33
Encapsulates a declaration of a concrete type.
Definition: Declaration.cs:34
Encapsulates a declaration.
virtual object ReportError(String operation, String element, Location location)
virtual object Exec(Declaration d, object arg)
virtual object Exec(FieldAccessExpression f, object arg)
virtual object Exec(IdentifierExpression i, object arg)
virtual object Exec(AstNode a, object arg)
Encapsulates a invocation expression to base class.
Encapsulates a new expression.