aboutsummaryrefslogtreecommitdiffstats
path: root/modula2.lua
diff options
context:
space:
mode:
authorPedro A. Aranda Gutierrez <paaguti@gmail.com>2023-02-25 12:34:48 +0100
committerPedro A. Aranda Gutierrez <paaguti@gmail.com>2023-02-25 12:34:48 +0100
commit09530bfaadaba758c8663d1e2fc81f853cead920 (patch)
tree6e628413c1bfacb0be400f90337d6cce4201fba5 /modula2.lua
parent07da679f65b2d1c18610a25587091eec60f07245 (diff)
downloadtextadept-modula-lexers-main.tar.gz
Fix for numbers in Modula-2HEADmain
Diffstat (limited to 'modula2.lua')
-rw-r--r--modula2.lua15
1 files changed, 7 insertions, 8 deletions
diff --git a/modula2.lua b/modula2.lua
index f762d9f..44d9c9f 100644
--- a/modula2.lua
+++ b/modula2.lua
@@ -42,10 +42,10 @@ lex:add_rule('type', token(lexer.TYPE, word_match({
-- Constants
lex:add_rule('constant', token(lexer.CONSTANT, word_match({
'FALSE', 'TRUE', 'NIL'
-}, false)
+}, false)))
-- Strings.
---lex:add_rule('string', token(lexer.STRING, S('uUrR')^-1 * lexer.range("'", true, false)))
+-- lex:add_rule('string', token(lexer.STRING, S('uUrR')^-1 * lexer.range("'", true, false)))
local modula_string = lexer.range("\"", true, false)
local modula_char = S("'")*P(1)*S("'")
lex:add_rule('string', token(lexer.STRING, modula_string + modula_char))
@@ -58,14 +58,13 @@ lex:add_rule('comment', token(lexer.COMMENT, lexer.range('(*', '*)')))
-- Numbers.
local modula_octal = R("07")^1*R("BC")
-local modula_dec = R("09")^1
local modula_hex = (R("09")+R("AF"))^1*P("H")
-local modula_real = R("09")^1*(P(".")*R("09")^1)^-1*P("E")*S("+-")^-1*R("09")^1
-lex:add_rule('number', token(lexer.NUMBER, modula_octal + modula_dec +
- modula_hex + modula_real))
+local modula_exp = S("E")*S("+-")^-1*R("09")^1
+local modula_rest = S(".")*R("09")^1
+local modula_real = S("-")^-1*R("09")^1*modula_rest^-1*modula_exp^-1
+lex:add_rule('number', token(lexer.NUMBER, modula_octal + modula_hex +
+ modula_real))
-- Operators.
lex:add_rule('operator', token(lexer.OPERATOR, S('.,;^&:=<>+-/*()[]')))
-lexer.property['scintillua.comment'] = '//'
-
return lex