0 "Γ" := rules • "expr" [0-0] "expr" := rules • "expr_function" [0-0] "expr_function" := rules • "ID" ":" "expr_function" [0-0] "expr_function" := rules • "ID" "@" "{" "formals" "}" ":" "expr_function" [0-0] "expr_function" := rules • "expr_if" [0-0] "ID" := lexemes • "ID" [0-0] "expr_if" := rules • "expr_op" [0-0] "expr_op" := rules • "expr_op" "EQ" "expr_op" [0-0] "expr_op" := rules • "expr_op" "NEQ" "expr_op" [0-0] "expr_op" := rules • "expr_op" "<" "expr_op" [0-0] "expr_op" := rules • "expr_op" "LEQ" "expr_op" [0-0] "expr_op" := rules • "expr_op" ">" "expr_op" [0-0] "expr_op" := rules • "expr_op" "GEQ" "expr_op" [0-0] "expr_op" := rules • "expr_op" "AND" "expr_op" [0-0] "expr_op" := rules • "expr_op" "OR" "expr_op" [0-0] "expr_op" := rules • "expr_op" "IMPL" "expr_op" [0-0] "expr_op" := rules • "expr_op" "UPDATE" "expr_op" [0-0] "expr_op" := rules • "expr_op" "?" "attrpath" [0-0] "expr_op" := rules • "expr_op" "+" "expr_op" [0-0] "expr_op" := rules • "expr_op" "-" "expr_op" [0-0] "expr_op" := rules • "expr_op" "*" "expr_op" [0-0] "expr_op" := rules • "expr_op" "/" "expr_op" [0-0] "expr_op" := rules • "expr_op" "CONCAT" "expr_op" [0-0] "expr_op" := rules • "expr_app" [0-0] "expr_app" := rules • "expr_app" "expr_select" [0-0] "expr_app" := rules • "expr_select" [0-0] "expr_select" := rules • "expr_simple" "." "attrpath" [0-0] "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [0-0] "expr_select" := rules • "expr_simple" "OR_KW" [0-0] "expr_select" := rules • "expr_simple" [0-0] "expr_simple" := rules • "ID" [0-0] 1 "ID" := lexemes "ID" • [0-1] "expr_function" := rules "ID" • ":" "expr_function" [0-1] "expr_function" := rules "ID" • "@" "{" "formals" "}" ":" "expr_function" [0-1] "expr_simple" := rules "ID" • [0-1] "expr_select" := rules "expr_simple" • "." "attrpath" [0-1] "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [0-1] "expr_select" := rules "expr_simple" • "OR_KW" [0-1] "expr_select" := rules "expr_simple" • [0-1] "expr_app" := rules "expr_select" • [0-1] "expr_op" := rules "expr_app" • [0-1] "expr_app" := rules "expr_app" • "expr_select" [0-1] "expr_if" := rules "expr_op" • [0-1] "expr_op" := rules "expr_op" • "EQ" "expr_op" [0-1] "expr_op" := rules "expr_op" • "NEQ" "expr_op" [0-1] "expr_op" := rules "expr_op" • "<" "expr_op" [0-1] "expr_op" := rules "expr_op" • "LEQ" "expr_op" [0-1] "expr_op" := rules "expr_op" • ">" "expr_op" [0-1] "expr_op" := rules "expr_op" • "GEQ" "expr_op" [0-1] "expr_op" := rules "expr_op" • "AND" "expr_op" [0-1] "expr_op" := rules "expr_op" • "OR" "expr_op" [0-1] "expr_op" := rules "expr_op" • "IMPL" "expr_op" [0-1] "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [0-1] "expr_op" := rules "expr_op" • "?" "attrpath" [0-1] "expr_op" := rules "expr_op" • "+" "expr_op" [0-1] "expr_op" := rules "expr_op" • "-" "expr_op" [0-1] "expr_op" := rules "expr_op" • "*" "expr_op" [0-1] "expr_op" := rules "expr_op" • "/" "expr_op" [0-1] "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [0-1] "expr_select" := rules • "expr_simple" "." "attrpath" [1-1] "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [1-1] "expr_select" := rules • "expr_simple" "OR_KW" [1-1] "expr_select" := rules • "expr_simple" [1-1] "expr_function" := rules "expr_if" • [0-1] "expr_simple" := rules • "SPATH" [1-1] "expr" := rules "expr_function" • [0-1] "SPATH" := lexemes • "SPATH" [1-1] "Γ" := rules "expr" • [0-1] 2 "SPATH" := lexemes "SPATH" • [1-2] "expr_simple" := rules "SPATH" • [1-2] "expr_select" := rules "expr_simple" • "." "attrpath" [1-2] "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [1-2] "expr_select" := rules "expr_simple" • "OR_KW" [1-2] "expr_select" := rules "expr_simple" • [1-2] "expr_app" := rules "expr_app" "expr_select" • [0-2] "expr_op" := rules "expr_app" • [0-2] "expr_app" := rules "expr_app" • "expr_select" [0-2] "expr_if" := rules "expr_op" • [0-2] "expr_op" := rules "expr_op" • "EQ" "expr_op" [0-2] "expr_op" := rules "expr_op" • "NEQ" "expr_op" [0-2] "expr_op" := rules "expr_op" • "<" "expr_op" [0-2] "expr_op" := rules "expr_op" • "LEQ" "expr_op" [0-2] "expr_op" := rules "expr_op" • ">" "expr_op" [0-2] "expr_op" := rules "expr_op" • "GEQ" "expr_op" [0-2] "expr_op" := rules "expr_op" • "AND" "expr_op" [0-2] "expr_op" := rules "expr_op" • "OR" "expr_op" [0-2] "expr_op" := rules "expr_op" • "IMPL" "expr_op" [0-2] "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [0-2] "expr_op" := rules "expr_op" • "?" "attrpath" [0-2] "expr_op" := rules "expr_op" • "+" "expr_op" [0-2] "expr_op" := rules "expr_op" • "-" "expr_op" [0-2] "expr_op" := rules "expr_op" • "*" "expr_op" [0-2] "expr_op" := rules "expr_op" • "/" "expr_op" [0-2] "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [0-2] "expr_select" := rules • "expr_simple" "." "attrpath" [2-2] "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [2-2] "expr_select" := rules • "expr_simple" "OR_KW" [2-2] "expr_select" := rules • "expr_simple" [2-2] "expr_function" := rules "expr_if" • [0-2] "expr_simple" := rules • "{" "binds" "}" [2-2] "expr" := rules "expr_function" • [0-2] "{" := lexemes • "{" [2-2] "Γ" := rules "expr" • [0-2] 3 "{" := lexemes "{" • [2-3] "expr_simple" := rules "{" • "binds" "}" [2-3] "binds" := rules • "binds" "attrpath" "=" "expr" ";" [3-3] "binds" := rules • "binds" "INHERIT" "attrs" ";" [3-3] "binds" := rules • "binds" "INHERIT" "(" "expr" ")" "attrs" ";" [3-3] "binds" := rules • [3-3] "expr_simple" := rules "{" "binds" • "}" [2-3] "binds" := rules "binds" • "attrpath" "=" "expr" ";" [3-3] "binds" := rules "binds" • "INHERIT" "attrs" ";" [3-3] "binds" := rules "binds" • "INHERIT" "(" "expr" ")" "attrs" ";" [3-3] "}" := lexemes • "}" [3-3] 4 "}" := lexemes "}" • [3-4] "expr_simple" := rules "{" "binds" "}" • [2-4] "expr_select" := rules "expr_simple" • "." "attrpath" [2-4] "expr_select" := rules "expr_simple" • "." "attrpath" "OR_KW" "expr_select" [2-4] "expr_select" := rules "expr_simple" • "OR_KW" [2-4] "expr_select" := rules "expr_simple" • [2-4] "." := lexemes • "." [4-4] "OR_KW" := lexemes • "OR_KW" [4-4] "expr_app" := rules "expr_app" "expr_select" • [0-4] "expr_op" := rules "expr_app" • [0-4] "expr_app" := rules "expr_app" • "expr_select" [0-4] "expr_if" := rules "expr_op" • [0-4] "expr_op" := rules "expr_op" • "EQ" "expr_op" [0-4] "expr_op" := rules "expr_op" • "NEQ" "expr_op" [0-4] "expr_op" := rules "expr_op" • "<" "expr_op" [0-4] "expr_op" := rules "expr_op" • "LEQ" "expr_op" [0-4] "expr_op" := rules "expr_op" • ">" "expr_op" [0-4] "expr_op" := rules "expr_op" • "GEQ" "expr_op" [0-4] "expr_op" := rules "expr_op" • "AND" "expr_op" [0-4] "expr_op" := rules "expr_op" • "OR" "expr_op" [0-4] "expr_op" := rules "expr_op" • "IMPL" "expr_op" [0-4] "expr_op" := rules "expr_op" • "UPDATE" "expr_op" [0-4] "expr_op" := rules "expr_op" • "?" "attrpath" [0-4] "expr_op" := rules "expr_op" • "+" "expr_op" [0-4] "expr_op" := rules "expr_op" • "-" "expr_op" [0-4] "expr_op" := rules "expr_op" • "*" "expr_op" [0-4] "expr_op" := rules "expr_op" • "/" "expr_op" [0-4] "expr_op" := rules "expr_op" • "CONCAT" "expr_op" [0-4] "expr_select" := rules • "expr_simple" "." "attrpath" [4-4] "expr_select" := rules • "expr_simple" "." "attrpath" "OR_KW" "expr_select" [4-4] "expr_select" := rules • "expr_simple" "OR_KW" [4-4] "expr_select" := rules • "expr_simple" [4-4] "expr_function" := rules "expr_if" • [0-4] "EQ" := lexemes • "EQ" [4-4] "NEQ" := lexemes • "NEQ" [4-4] "<" := lexemes • "<" [4-4] "LEQ" := lexemes • "LEQ" [4-4] ">" := lexemes • ">" [4-4] "GEQ" := lexemes • "GEQ" [4-4] "AND" := lexemes • "AND" [4-4] "OR" := lexemes • "OR" [4-4] "IMPL" := lexemes • "IMPL" [4-4] "UPDATE" := lexemes • "UPDATE" [4-4] "?" := lexemes • "?" [4-4] "+" := lexemes • "+" [4-4] "-" := lexemes • "-" [4-4] "*" := lexemes • "*" [4-4] "/" := lexemes • "/" [4-4] "CONCAT" := lexemes • "CONCAT" [4-4] "expr_simple" := rules • "ID" [4-4] "expr_simple" := rules • "INT" [4-4] "expr_simple" := rules • "FLOAT" [4-4] "expr_simple" := rules • "\"" "string_parts" "\"" [4-4] "expr_simple" := rules • "IND_STRING_OPEN" "ind_string_parts" "IND_STRING_CLOSE" [4-4] "expr_simple" := rules • "path_start" "PATH_END" [4-4] "expr_simple" := rules • "path_start" "string_parts_interpolated" "PATH_END" [4-4] "expr_simple" := rules • "SPATH" [4-4] "expr_simple" := rules • "URI" [4-4] "expr_simple" := rules • "(" "expr" ")" [4-4] "expr_simple" := rules • "LET" "{" "binds" "}" [4-4] "expr_simple" := rules • "REC" "{" "binds" "}" [4-4] "expr_simple" := rules • "{" "binds" "}" [4-4] "expr_simple" := rules • "[" "expr_list" "]" [4-4] "expr" := rules "expr_function" • [0-4] "ID" := lexemes • "ID" [4-4] "INT" := lexemes • "INT" [4-4] "FLOAT" := lexemes • "FLOAT" [4-4] "\"" := lexemes • "\"" [4-4] "IND_STRING_OPEN" := lexemes • "IND_STRING_OPEN" [4-4] "path_start" := rules • "PATH" [4-4] "path_start" := rules • "HPATH" [4-4] "SPATH" := lexemes • "SPATH" [4-4] "URI" := lexemes • "URI" [4-4] "(" := lexemes • "(" [4-4] "LET" := lexemes • "LET" [4-4] "REC" := lexemes • "REC" [4-4] "{" := lexemes • "{" [4-4] "[" := lexemes • "[" [4-4] "Γ" := rules "expr" • [0-4] "PATH" := lexemes • "PATH" [4-4] "HPATH" := lexemes • "HPATH" [4-4]