{ package grammar } Input = (Std / EOL)+ LabelUpper = [A-Z_]+ { fmt.Println(string(c.text)) return c.text, nil } Std = LabelUpperLine (LabelLine+ / UpperLabelLine+) LabelUpperLine = LabelUpper EOL LabelLine = [\t] Label EOL UpperLabelLine = [\t] (LabelUpper _)+ UpperLabel EOL Label = [a-z_]+ { fmt.Println(string(c.text)) return c.text, nil } _ = [ \t]+ EOL = _? Comment? ("\r\n" / "\n\r" / "\r" / "\n" / EOF) EOF = !. Comment = "//" [^\r\n]*