// ================================================================ // LEXER _string_literal_element : 'A'-'Z' | 'a'-'z' | '0'-'9' | ' ' | '!' | '#' | '$' | '%' | '&' | '\'' | '\\' | '(' | ')' | '*' | '+' | ',' | '-' | '.' | '/' | ':' | ';' | '<' | '=' | '>' | '?' | '@' | '[' | ']' | '^' | '_' | '`' | '{' | '|' | '}' | '~' | ( '\\' '"' ) | ( '\\' '[' ) | ( '\\' ']' ) | ( '\\' 'b' ) | ( '\\' 'f' ) | ( '\\' 'n' ) | ( '\\' 'r' ) | ( '\\' 't' ) | ( '\\' '\\' ) | ( '\\' '0' ) | ( '\\' 'x' ) | '\u0100'-'\U0010FFFF' ; string_literal : '"' {_string_literal_element} '"' ; // ================================================================ // IMPORT << import "miller/src/dsl" >> // ================================================================ // PARSER // ---------------------------------------------------------------- Root : StringLiteral << dsl.NewAST($0) >> ; StringLiteral : string_literal << dsl.NewASTNodeStripDoubleQuotePair($0, dsl.NodeTypeStringLiteral) >> ;