// Declarations %import eu.bandm.tools.lexic.* %import java.io.IOException %import java.io.InputStreamReader %import java.nio.charset.StandardCharsets // Declare an end-of-file token called EOF. %eof EOF // Declare an error token called Error. %error Error Integer = "0" | [1-9][0-9]*; Ident = [a-zA-Z_][a-zA-Z_0-9]*; %% // Definitions Whitespace : [ \n\t\r\f]+; // A File can be either an integer, or an identifier. File : Integer | Ident; %% // Code public static void main(String[] args) { // The construct() function is generated by lexicgen and returns a Lexer. var lexer = construct(); try (var rdr = new InputStreamReader(System.in, StandardCharsets.UTF_8)) { TokenSource tokens = lexer .lex(CodePointSource.read(rdr, e -> {})) .removeTypes(TokenType.Whitespace); while (true) { var token = tokens.get(); if (token.getType() == TokenType.EOF) break; System.out.println(token); } } catch (IOException e) {} }