From bd799e42b40613983c6e3cb9aedf58866ac68605 Mon Sep 17 00:00:00 2001 From: _ov4 Date: Fri, 30 Jan 2026 13:11:20 +0000 Subject: Added FUNCTION and PROCEDURE --- lib/Lexer/Lexer.cc | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) (limited to 'lib/Lexer') diff --git a/lib/Lexer/Lexer.cc b/lib/Lexer/Lexer.cc index 51e27dd..6854cc9 100644 --- a/lib/Lexer/Lexer.cc +++ b/lib/Lexer/Lexer.cc @@ -21,6 +21,9 @@ int Lexer::gettok() { if (IdentifierStr == "DECLARE") return tok_declare; if (IdentifierStr == "INTEGER") return tok_integer_kw; + if (IdentifierStr == "BOOLEAN") return tok_integer_kw; // TODO: implement real BOOLEAN + if (IdentifierStr == "REAL") return tok_integer_kw; // TODO: implement real REAL + if (IdentifierStr == "INPUT") return tok_input; if (IdentifierStr == "OUTPUT") return tok_output; @@ -44,6 +47,14 @@ int Lexer::gettok() { if (IdentifierStr == "ARRAY") return tok_array; if (IdentifierStr == "OF") return tok_of; + if (IdentifierStr == "FUNCTION") return tok_function; + if (IdentifierStr == "ENDFUNCTION") return tok_endfunction; + if (IdentifierStr == "PROCEDURE") return tok_procedure; + if (IdentifierStr == "ENDPROCEDURE") return tok_endprocedure; + if (IdentifierStr == "RETURN") return tok_return; + if (IdentifierStr == "RETURNS") return tok_returns; + if (IdentifierStr == "CALL") return tok_call; + return tok_identifier; } @@ -93,6 +104,15 @@ int Lexer::gettok() { return tok_colon; } + if (LastChar == '(') { LastChar = getchar(); return '('; } + if (LastChar == ')') { LastChar = getchar(); return ')'; } + if (LastChar == '[') { LastChar = getchar(); return '['; } + if (LastChar == ']') { LastChar = getchar(); return ']'; } + if (LastChar == ',') { LastChar = getchar(); return ','; } + if (LastChar == '+') { LastChar = getchar(); return '+'; } + if (LastChar == '-') { LastChar = getchar(); return '-'; } + if (LastChar == '*') { LastChar = getchar(); return '*'; } + if (LastChar == '/') { int NextChar = getchar(); if (NextChar == '/') { -- cgit v1.3.1-4-g156e