flexer_parser.go 646 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package flexer
  2. /* Parser for the flexer lexer generator. */
  3. type GeneratorRule struct {
  4. Name string
  5. Regexp string
  6. Keywords []string
  7. Action string
  8. }
  9. type GeneratorParser struct {
  10. Tokens []Token
  11. Index int
  12. Rules []GeneratorRule
  13. }
  14. func (g GeneratorParser) Token() Token {
  15. return g.Tokens[g.Index]
  16. }
  17. func (g GeneratorParser) Accept() (Token, err) {
  18. }
  19. func (g *GeneratorParser) ParseRule() error {
  20. tok := g.Token()
  21. if tok.Kind() != FlexerKind Terminal
  22. for g.Index < len(g.Tokens) {
  23. g.ParseRule()
  24. }
  25. return nil
  26. }
  27. func (g *GeneratorParser) Parse() error {
  28. for g.Index < len(g.Tokens) {
  29. g.ParseRule()
  30. }
  31. return nil
  32. }