From b89095bbd2a16835cd673e50a2769b238df7fe89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=89tienne=20Reuh=20Fildadut?= Date: Sun, 16 Jan 2022 00:35:52 +0100 Subject: [PATCH] Change priority of _~?_, _~_, and _#_ --- LANGUAGE.md | 3 ++- parser/expression.lua | 37 ++++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/LANGUAGE.md b/LANGUAGE.md index abfb88b..5f924ec 100644 --- a/LANGUAGE.md +++ b/LANGUAGE.md @@ -835,8 +835,9 @@ From lowest to highest priority: _;_ _; _:=_ _+=_ _-=_ _//=_ _/=_ _*=_ _%=_ _^=_ _,_ +_~?_ _~_ _#_ _=_ -_|_ _&_ _~?_ _~_ _#_ +_|_ _&_ _!=_ _==_ _>=_ _<=_ _<_ _>_ _+_ _-_ _*_ _//_ _/_ _%_ diff --git a/parser/expression.lua b/parser/expression.lua index 41235e7..60cc882 100644 --- a/parser/expression.lua +++ b/parser/expression.lua @@ -5,19 +5,20 @@ local binops_prio = { [1] = { ";" }, [2] = { ":=", "+=", "-=", "//=", "/=", "*=", "%=", "^=" }, [3] = { "," }, - [4] = { "=" }, - [5] = { "|", "&", "~?", "~", "#" }, - [6] = { "!=", "==", ">=", "<=", "<", ">" }, - [7] = { "+", "-" }, - [8] = { "*", "//", "/", "%" }, - [9] = { "::" }, - [10] = {}, -- unary operators - [11] = { "^" }, - [12] = { ".", "!" }, - [13] = {} + [4] = { "~?", "~", "#" }, + [5] = { "=" }, + [6] = { "|", "&" }, + [7] = { "!=", "==", ">=", "<=", "<", ">" }, + [8] = { "+", "-" }, + [9] = { "*", "//", "/", "%" }, + [10] = { "::" }, + [11] = {}, -- unary operators + [12] = { "^" }, + [13] = { ".", "!" }, + [14] = {} } -local pair_priority = 4 -local implicit_multiply_priority = 8.5 -- just above / so 1/2x gives 1/(2x) +local pair_priority = 5 +local implicit_multiply_priority = 9.5 -- just above / so 1/2x gives 1/(2x) -- unop priority local prefix_unops_prio = { [1] = {}, @@ -29,10 +30,11 @@ local prefix_unops_prio = { [7] = {}, [8] = {}, [9] = {}, - [10] = { "-", "!" }, - [11] = {}, + [10] = {}, + [11] = { "-", "!" }, [12] = {}, - [13] = { "&" } + [13] = {}, + [14] = { "&" } } local suffix_unops_prio = { [1] = { ";" }, @@ -46,8 +48,9 @@ local suffix_unops_prio = { [9] = {}, [10] = {}, [11] = {}, - [12] = { "!" }, - [13] = {} + [12] = {}, + [13] = { "!" }, + [14] = {} } local function get_text_in_litteral(s, start_pos)