aboutsummaryrefslogtreecommitdiffhomepage
path: root/lexlua
diff options
context:
space:
mode:
authormitchell <unknown>2019-09-17 23:05:55 -0400
committermitchell <unknown>2019-09-17 23:05:55 -0400
commit9e14d59368bf05aea92a04421f5e128d7a289923 (patch)
tree771e70642b479950a5feaf3a1098fba21ffbc3ab /lexlua
parentd2039d0f36599e4db905cb12d8683ee802bfb645 (diff)
downloadscintilla-mirror-9e14d59368bf05aea92a04421f5e128d7a289923.tar.gz
Updated Prolog and Logtalk lexers.
Thanks to Michael Richter.
Diffstat (limited to 'lexlua')
-rw-r--r--lexlua/logtalk.lua23
-rw-r--r--lexlua/prolog.lua22
2 files changed, 28 insertions, 17 deletions
diff --git a/lexlua/logtalk.lua b/lexlua/logtalk.lua
index 219a9509e..61f7d98ef 100644
--- a/lexlua/logtalk.lua
+++ b/lexlua/logtalk.lua
@@ -7,25 +7,28 @@ local P, R, S = lpeg.P, lpeg.R, lpeg.S
local lex = lexer.new('logtalk', {inherit = lexer.load('prolog')})
+-- Add logtalk keywords to the prolog ones.
lex:modify_rule('keyword', token(lexer.KEYWORD, word_match[[
-- Logtalk "keywords" generated from Vim syntax highlighting file with Prolog
-- keywords stripped since were building up on the Prolog lexer.
abolish_category abolish_events abolish_object abolish_protocol after alias as
before built_in calls category category_property coinductive complements
- complements_object conforms_to_protocol create create_category create_object
+ complements_object conforms_to_protocol context create_category create_object
create_protocol create_logtalk_flag current current_category current_event
- current_logtalk_flag current_object current_protocol define_events encoding
- end_category end_class end_object end_protocol extends extends_category
- extends_object extends_protocol forward implements implements_protocol imports
- imports_category include info instantiates instantiates_class is
- logtalk_compile logtalk_library_path logtalk_load logtalk_load_context
- logtalk_make meta_non_terminal mode object object_property parameter private
- protected protocol_property self sender set_logtalk_flag specializes
- specializes_class synchronized this threaded threaded_call threaded_engine
+ current_logtalk_flag current_object current_protocol define_events domain_error
+ encoding end_category end_class end_object end_protocol evaluation_error
+ existence_error extends extends_category extends_object extends_protocol forward
+ implements implements_protocol imports imports_category include info instantiates
+ instantiates_class instantiation_error is logtalk_compile logtalk_library_path
+ logtalk_load logtalk_load_context logtalk_make logtalk_make_target_action
+ meta_non_terminal mode object object_property parameter permission_error private
+ protected protocol_property representation_error resource_error self sender
+ set_logtalk_flag specializes specializes_class synchronized syntax_error
+ system_error this threaded threaded_call threaded_cancel threaded_engine
threaded_engine_create threaded_engine_destroy threaded_engine_fetch
threaded_engine_next threaded_engine_next_reified threaded_engine_post
threaded_engine_self threaded_engine_yield threaded_exit threaded_ignore
- threaded_notify threaded_once threaded_peek threaded_wait uses
+ threaded_notify threaded_once threaded_peek threaded_wait type_error uses
-- info/1 and info/2 predicates have their own keywords manually extracted
-- from documentation.
comment argnames arguments author version date parameters parnames copyright
diff --git a/lexlua/prolog.lua b/lexlua/prolog.lua
index 4a45a5b31..373361b5a 100644
--- a/lexlua/prolog.lua
+++ b/lexlua/prolog.lua
@@ -110,20 +110,28 @@ lex:add_rule('keyword', token(lexer.KEYWORD, word_match[[
-- Identifiers.
lex:add_rule('identifier', token(lexer.IDENTIFIER, lexer.word))
--- Strings.
-lex:add_rule('string', token(lexer.STRING, lexer.delimited_range("'", true) +
- lexer.delimited_range('"', true)))
-
-- Comments.
local line_comment = '%' * lexer.nonnewline^0
local block_comment = '/*' * (lexer.any - '*/')^0 * P('*/')^-1
lex:add_rule('comment', token(lexer.COMMENT, line_comment + block_comment))
-- Numbers.
-lex:add_rule('number', token(lexer.NUMBER, lexer.digit^1 *
- ('.' * lexer.digit^1)^-1))
+local binary_number = '0b' * S('01')^1
+local character_code = '0\'' * S('\\')^-1 * (lexer.print - lexer.space)
+local decimal_number = lexer.digit^1 * ('.' * lexer.digit)^-1
+local hexadecimal_number = '0x' * lexer.xdigit^1
+local octal_number = '0o' * S('01234567')^1
+lex:add_rule('number', token(lexer.NUMBER, character_code +
+ binary_number +
+ hexadecimal_number +
+ octal_number +
+ decimal_number))
+
+-- Strings.
+lex:add_rule('string', token(lexer.STRING, lexer.delimited_range("'", true) +
+ lexer.delimited_range('"', true)))
-- Operators.
-lex:add_rule('operator', token(lexer.OPERATOR, S('-!+\\|=:;&<>()[]{}')))
+lex:add_rule('operator', token(lexer.OPERATOR, S('-!+\\|=:;&<>()[]{}/*^@?')))
return lex