diff --git a/src/procrusql/parser.py b/src/procrusql/parser.py index 7e2c50e..9737dd3 100755 --- a/src/procrusql/parser.py +++ b/src/procrusql/parser.py @@ -78,7 +78,8 @@ def parse_ruleset(ps): ps3 = parse_table_rule(ps2) or \ parse_column_rule(ps2) or \ parse_data_rule(ps2) or \ - parse_index_rule(ps2) + parse_index_rule(ps2) or \ + parse_view_rule(ps2) if ps3: ps2.ast.append(ps3.ast) ps2.position = ps3.position @@ -236,6 +237,20 @@ def parse_index_rule(ps): return ps2 +def parse_view_rule(ps): + ps2 = ps.clone() + ps2.skip_whitespace_and_comments() + if not ps2.match(r"view\b"): + ps.record_child_failure(ps2, "expected “view”") + return + ps2.skip_whitespace_and_comments() + ps3 = parse_table_name(ps2) + if not ps3: + ps.record_child_failure(ps2, "expected view name") + return + ps2.skip_whitespace_and_comments() + ps3 = parse_multiline_string(ps2) + def parse_table_name(ps):