This project is an implementation of a lexical analyzer (lexer) and parser for a programming language. It converts an input source code into a sequence of tokens and constructs an Abstract Syntax Tree (AST) for further processing.
Lexer.java– Tokenizes an input character stream based on predefined lexical rules.LexException.java– Defines exceptions for lexical errors.Token.java– Represents individual tokens identified by the lexer.
Parser.java– Parses the tokenized input into an AST following syntactic rules.Ast.java– Defines the AST structure, including expressions and statements.
- Lexical Analysis: Identifies identifiers, numbers, strings, operators, and comments.
- Parsing: Constructs an AST from a sequence of tokens.
- Error Handling: Throws appropriate exceptions for invalid syntax or lexical errors.
- Lexing
Lexer lexer = new Lexer("let x = 5;"); List<Token> tokens = lexer.lex();
- Parsing
Parser parser = new Parser(tokens); Ast.Source ast = parser.parseSource();
- Guava (for
checkStateassertions) - Java SE 11+
- Support for additional language constructs.
- Error reporting with line numbers.
- Improved AST visualization tools.