mirror of
https://github.com/AdaCore/langkit.git
synced 2026-02-12 12:28:12 -08:00
39 lines
955 B
Python
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),
|
|
)
|