From afa896ff14d3857b819d5c91ef98011619d7b0aa Mon Sep 17 00:00:00 2001 From: Miek Gieben Date: Mon, 11 Jul 2011 21:44:07 +0200 Subject: [PATCH] more parser updates --- dns.l | 35 +++++++++++++++++++++++++++++------ 1 file changed, 29 insertions(+), 6 deletions(-) diff --git a/dns.l b/dns.l index 7b8e94bf..bcde008c 100644 --- a/dns.l +++ b/dns.l @@ -1,6 +1,8 @@ - package main + package main + import "fmt" - import "fmt" + var debug = true + var lastOwner = string CHAR [A-Za-z0-9/+=a.{}] BLANK [ \t] @@ -18,25 +20,34 @@ BLANK [ \t] BEGIN(INITIAL) } -^{CHAR}+ { +^{CHAR}+ { YOUT("qname") + yylval = yytext + lastOwner = yylval BEGIN(classttl) + return QNAME } ^{BLANK}+ { YOUT("qname.") // Return qname TOK, and fix yytext + yylval = lastOwner BEGIN(classttl) + return QNAME } {CHAR}+ { + yylval = yytext switch yycheckit(yytext) { case 0: YOUT("{qtype:" + yytext + "}") BEGIN(rest) + return QTYPE case 1: YOUT("qclass") + return QCLASS case 2: YOUT("ttl") + return TTL } } {BLANK}+ { @@ -45,6 +56,8 @@ BLANK [ \t] {CHAR}+ { YOUT("str") + yylval = yytext + return STR } {BLANK}+ { YOUT(".") @@ -52,6 +65,7 @@ BLANK [ \t] \n { YOUT("NL\n") BEGIN(INITIAL) + return NL } %% @@ -68,9 +82,18 @@ func yycheckit(s string) int { func YOUT(s string) { - fmt.Printf("%s", s) + if debug { + fmt.Printf("%s", s) + } } -func main() { - yylex() +type yyLex int + +func (yyLex) Lex(yylval *yySymType) int { + yylex() + return 0 +} + +func (yyLex) Error(s string) { + println(s) }