mirror of
https://github.com/aNNiMON/Own-Programming-Language-Tutorial.git
synced 2024-09-20 08:44:20 +03:00
Возможность вывода простых значений без оператора print
This commit is contained in:
parent
a89b02ee8d
commit
d58bf6f271
@ -10,6 +10,7 @@ import com.annimon.ownlang.lib.Variables;
|
|||||||
import com.annimon.ownlang.parser.Lexer;
|
import com.annimon.ownlang.parser.Lexer;
|
||||||
import com.annimon.ownlang.parser.Parser;
|
import com.annimon.ownlang.parser.Parser;
|
||||||
import com.annimon.ownlang.parser.Token;
|
import com.annimon.ownlang.parser.Token;
|
||||||
|
import com.annimon.ownlang.parser.TokenType;
|
||||||
import com.annimon.ownlang.parser.ast.BlockStatement;
|
import com.annimon.ownlang.parser.ast.BlockStatement;
|
||||||
import com.annimon.ownlang.parser.ast.Statement;
|
import com.annimon.ownlang.parser.ast.Statement;
|
||||||
import com.annimon.ownlang.parser.visitors.PrintVisitor;
|
import com.annimon.ownlang.parser.visitors.PrintVisitor;
|
||||||
@ -35,6 +36,8 @@ public final class Repl {
|
|||||||
RESET = ":reset",
|
RESET = ":reset",
|
||||||
EXIT = ":exit";
|
EXIT = ":exit";
|
||||||
|
|
||||||
|
private static final Token PRINTLN_TOKEN = new Token(TokenType.PRINTLN, "", 0, 0);
|
||||||
|
|
||||||
public static void main(String[] args) {
|
public static void main(String[] args) {
|
||||||
System.out.println("Welcome to OwnLang " + Main.VERSION + " REPL");
|
System.out.println("Welcome to OwnLang " + Main.VERSION + " REPL");
|
||||||
printHelp(false);
|
printHelp(false);
|
||||||
@ -73,8 +76,16 @@ public final class Repl {
|
|||||||
final Parser parser = new Parser(tokens);
|
final Parser parser = new Parser(tokens);
|
||||||
program = parser.parse();
|
program = parser.parse();
|
||||||
if (parser.getParseErrors().hasErrors()) {
|
if (parser.getParseErrors().hasErrors()) {
|
||||||
|
// Try to print value
|
||||||
|
List<Token> tokens2 = new ArrayList<>();
|
||||||
|
tokens2.add(PRINTLN_TOKEN);
|
||||||
|
tokens2.addAll(tokens);
|
||||||
|
Parser parser2 = new Parser(tokens2);
|
||||||
|
program = parser2.parse();
|
||||||
|
if (parser2.getParseErrors().hasErrors()) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
program.execute();
|
program.execute();
|
||||||
} catch (LexerException lex) {
|
} catch (LexerException lex) {
|
||||||
continue;
|
continue;
|
||||||
|
Loading…
Reference in New Issue
Block a user