Class Jasic


  • public class Jasic
    extends java.lang.Object
    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      class  Jasic.AssignStatement
      An assignment statement evaluates an expression and stores the result in a variable.
      static interface  Jasic.Expression
      Base interface for an expression.
      class  Jasic.GotoStatement
      A "goto" statement jumps execution to another place in the program.
      class  Jasic.IfThenStatement
      An if then statement jumps execution to another place in the program, but only if an expression evaluates to something other than 0.
      class  Jasic.InputStatement
      An "input" statement reads input from the user and stores it in a variable.
      class  Jasic.NumberValue
      A numeric value.
      class  Jasic.OperatorExpression
      An operator expression evaluates two expressions and then performs some arithmetic operation on the results.
      class  Jasic.PrintStatement
      A "print" statement evaluates an expression, converts the result to a string, and displays it to the user.
      static interface  Jasic.Statement
      Base interface for a Jasic statement.
      class  Jasic.StringValue
      A string value.
      static interface  Jasic.Value
      This is the base interface for a value.
      class  Jasic.VariableExpression
      A variable expression evaluates to the current value stored in that variable.
    • Constructor Summary

      Constructors 
      Constructor Description
      Jasic()
      Constructs a new Jasic instance.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void interpret​(java.lang.String source)
      This is where the magic happens.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • Jasic

        public Jasic()
        Constructs a new Jasic instance. The instance stores the global state of the interpreter such as the values of all of the variables and the current statement.
    • Method Detail

      • interpret

        public void interpret​(java.lang.String source)
        This is where the magic happens. This runs the code through the parsing pipeline to generate the AST. Then it executes each statement. It keeps track of the current line in a member variable that the statement objects have access to. This lets "goto" and "if then" do flow control by simply setting the index of the current statement. In an interpreter that didn't mix the interpretation logic in with the AST node classes, this would be doing a lot more work.
        Parameters:
        source - A string containing the source code of a .jas script to interpret.