Files
langkit/testsuite/python_support/lexer_example.py
Pierre-Marie de Rodat 7b65e98889 Add a testcase for the LexicalEnv.get binding in Python
Change-Id: I67873b9eae388bae6759b7f6d8909d60e2a93703
TN: P406-021
2016-04-12 16:02:13 +02:00

39 lines
955 B
Python

from langkit.compiled_types import root_grammar_class, StructMetaClass
from langkit.lexer import (
Eof, Ignore, Lexer, LexerToken, Literal, NoText, Pattern, WithSymbol,
WithText
)
class Token(LexerToken):
Example = NoText()
Null = NoText()
Comma = NoText()
LPar = NoText()
RPar = NoText()
LBrace = NoText()
RBrace = NoText()
Number = WithText()
Identifier = WithSymbol()
foo_lexer = Lexer(Token)
foo_lexer.add_rules(
(Pattern(r'[ \n\r\t]+'), Ignore()),
(Eof(), Token.Termination),
(Literal("example"), Token.Example),
(Literal("null"), Token.Null),
(Literal(','), Token.Comma),
(Literal('('), Token.LPar),
(Literal(')'), Token.RPar),
(Literal('{'), Token.LBrace),
(Literal('}'), Token.RBrace),
(Pattern('[0-9]+'), Token.Number),
(Pattern('[a-zA-Z_]+'), Token.Identifier),
)