diff options
author | Karl Berry <karl@freefriends.org> | 2014-08-20 21:53:18 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-08-20 21:53:18 +0000 |
commit | 95d91547803a6ceab929ef723dfdebe0e31e7a7e (patch) | |
tree | b0bab3bb1fed9f52a46cdb1f36a29d516c3ae2fe /Master/texmf-dist/doc/latex/pygmentex/demo.java | |
parent | 1dd6e5bec91358ff6bcd1964121979187a676cb4 (diff) |
pygmentex (12aug14)
git-svn-id: svn://tug.org/texlive/trunk@34996 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/pygmentex/demo.java')
-rw-r--r-- | Master/texmf-dist/doc/latex/pygmentex/demo.java | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/pygmentex/demo.java b/Master/texmf-dist/doc/latex/pygmentex/demo.java new file mode 100644 index 00000000000..bda5bb322f6 --- /dev/null +++ b/Master/texmf-dist/doc/latex/pygmentex/demo.java @@ -0,0 +1,68 @@ +import java.io.IOException; +import java.io.Reader; +import java.util.Hashtable; +import java.util.Map; + +public class Lexer +{ + private Reader in; + private int x; + + private Map<String,Token.T> reserved = + new Hashtable<String,Token.T>(); + + public Lexer(Reader in) throws IOException + { + this.in = in; + x = in.read(); + reserved.put("let", Token.T.LET); + // acrescentar demais palavras reservadas + // ... + } + + public Token get() throws IOException + { + // retornar o próximo símbolo léxico do programa + + while (Character.isWhitespace(x)) + x = in.read(); + + if (x == -1) + return new Token(Token.T.EOF); + + if ((char)x == ',') + { + x = in.read(); + return new Token(Token.T.COMMA); + } + + if (Character.isDigit(x)) + { + StringBuilder builder = new StringBuilder(); + builder.append((char)x); + while (Character.isDigit((x = in.read()))) + builder.append((char)x); + return new Token(Token.T.INT, new Long(builder.toString())); + } + + if (Character.isAlphabetic(x)) + { + StringBuilder builder = new StringBuilder(); + builder.append((char)x); + while (Character.isAlphabetic(x = in.read()) || + Character.isDigit(x) || (char)x == '_') + builder.append((char)x); + String s = builder.toString(); + Token.T t = reserved.get(s); + if (t == null) + return new Token(Token.T.ID, s); + return new Token(t); + } + + // completar demais tokens + + System.out.println("unexpectec char: <" + (char)x + ">"); + x = in.read(); + return get(); + } +} |