Açıklama Yok

runningwater 9a4fe6d1f2 Parsing variables -- Assignment statement 2 yıl önce
.idea 5ac782a190 execution 2 yıl önce
doc 73ff604276 first interpreter framework 2 yıl önce
src 9a4fe6d1f2 Parsing variables -- Assignment statement 2 yıl önce
.gitignore 3d2508ae84 first commit 2 yıl önce
README.md 424b1e0fae Parsing variables -- Environment 2 yıl önce
pom.xml 3d2508ae84 first commit 2 yıl önce

README.md

Lox

 // Your first Lox program!
 print "Hello, world!";
  • Dynamic typing
  • Automatic memory management
  • Data Types
    • Booleans
    • Numbers
    • Strings
    • Nil
  • Expressions
    • Arithmetic
    • Comparison and equality
    • Logical operators
    • Precedence and grouping
  • Statements
  • Variables
  • Control Flow
  • Functions
  • Closures
  • Classes

A Grammar for Lox expressions

  • Literals. Numbers,strings,Booleans, and nil
  • Unary expressions. A prefix ! to perform a logical not, and - to negate a number.
  • Binary expressions. The infix arithmetic(+,-,*,/) and logic operators (==, !=, <, <=,>,>=)

    • Parentheses. A pair of ( and ) wrapped around and expression.

      • Syntax tree - Expression

          expression     → literal
          | unary
          | binary
          | grouping ;
        
          literal        → NUMBER | STRING | "true" | "false" | "nil" ;
          grouping       → "(" expression ")" ;
          unary          → ( "-" | "!" ) expression ;
          binary         → expression operator expression ;
          operator       → "==" | "!=" | "<" | "<=" | ">" | ">="
          | "+"  | "-"  | "*" | "/" ;
        
        

      | Name | Operators | Associates |

              |------------|-----------|------------|
      

      | Equality | == != | Left | | Comparison | > >= < <= | Left | | Term | - + | Left | | Factor | / * | Left | | Unary | ! - | Right |

      ```
      expression     → equality ;
      equality       → comparison ( ( "!=" | "==" ) comparison )* ;
      comparison     → term ( ( ">" | ">=" | "<" | "<=" ) term )* ;
      term           → factor ( ( "-" | "+" ) factor )* ;
      factor         → unary ( ( "/" | "*" ) unary )* ;
      unary          → ( "!" | "-" ) unary
                     | primary ;
      primary        → NUMBER | STRING | "true" | "false" | "nil"
                     | "(" expression ")" | IDENTIFIER ;
      
      
      - Syntax tree - Statement
      
          ```
          program        → statement* EOF ;
            
          statement      → exprStmt
                         | printStmt ;
            
          exprStmt       → expression ";" ;
          printStmt      → "print" expression ";" ;
          ```
      
        A program is a list of statements followed by the special "end of file" token.
        The mandatory end token ensures the parse consumes the entire input and don't
        silently ignore erroneous unconsumed tokens at the end of a script.
      - Syntax tree - add Variable syntax
      
      program   → declaration* EOF ;
      
      declaration  → varDecl
                   | statement ;
      
      statement  → exprStmt
                 | printStmt ;
      
      varDecl  → "var" IDENTIFIER ( "=" expression )? ";" ;
      

      ```