@lpc-lang/core 1.1.2-5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +255 -0
- package/bin/lpc +4 -0
- package/bin/lpcserver +4 -0
- package/cancellationToken/cancellationToken.d.ts +8 -0
- package/cancellationToken/cancellationToken.d.ts.map +1 -0
- package/cancellationToken/serverCancellationToken.d.ts +21 -0
- package/cancellationToken/serverCancellationToken.d.ts.map +1 -0
- package/cli/_namespaces/lpc.d.ts +2 -0
- package/cli/_namespaces/lpc.d.ts.map +1 -0
- package/cli/lpc.d.ts +2 -0
- package/cli/lpc.d.ts.map +1 -0
- package/compiler/LpcConfig.d.ts +17 -0
- package/compiler/LpcConfig.d.ts.map +1 -0
- package/compiler/_namespaces/lpc.d.ts +49 -0
- package/compiler/_namespaces/lpc.d.ts.map +1 -0
- package/compiler/_namespaces/lpc.moduleSpecifiers.d.ts +2 -0
- package/compiler/_namespaces/lpc.moduleSpecifiers.d.ts.map +1 -0
- package/compiler/_namespaces/lpc.performance.d.ts +2 -0
- package/compiler/_namespaces/lpc.performance.d.ts.map +1 -0
- package/compiler/binder.d.ts +2 -0
- package/compiler/binder.d.ts.map +1 -0
- package/compiler/builderPublic.d.ts +76 -0
- package/compiler/builderPublic.d.ts.map +1 -0
- package/compiler/checker.d.ts +2 -0
- package/compiler/checker.d.ts.map +1 -0
- package/compiler/commandLineParser.d.ts +47 -0
- package/compiler/commandLineParser.d.ts.map +1 -0
- package/compiler/core.d.ts +3 -0
- package/compiler/core.d.ts.map +1 -0
- package/compiler/corePublic.d.ts +19 -0
- package/compiler/corePublic.d.ts.map +1 -0
- package/compiler/debug.d.ts +71 -0
- package/compiler/debug.d.ts.map +1 -0
- package/compiler/diagnosticInformation.d.ts +518 -0
- package/compiler/diagnosticInformation.d.ts.map +1 -0
- package/compiler/emitter.d.ts +11 -0
- package/compiler/emitter.d.ts.map +1 -0
- package/compiler/executeCommandLine.d.ts +15 -0
- package/compiler/executeCommandLine.d.ts.map +1 -0
- package/compiler/expressionToTypeNode.d.ts +2 -0
- package/compiler/expressionToTypeNode.d.ts.map +1 -0
- package/compiler/factory/baseNodeFactory.d.ts +2 -0
- package/compiler/factory/baseNodeFactory.d.ts.map +1 -0
- package/compiler/factory/emitHelper.d.ts +2 -0
- package/compiler/factory/emitHelper.d.ts.map +1 -0
- package/compiler/factory/emitNode.d.ts +22 -0
- package/compiler/factory/emitNode.d.ts.map +1 -0
- package/compiler/factory/nodeChildren.d.ts +2 -0
- package/compiler/factory/nodeChildren.d.ts.map +1 -0
- package/compiler/factory/nodeConverters.d.ts +2 -0
- package/compiler/factory/nodeConverters.d.ts.map +1 -0
- package/compiler/factory/nodeFactory.d.ts +4 -0
- package/compiler/factory/nodeFactory.d.ts.map +1 -0
- package/compiler/factory/parenthesizerRules.d.ts +2 -0
- package/compiler/factory/parenthesizerRules.d.ts.map +1 -0
- package/compiler/factory/utilities.d.ts +2 -0
- package/compiler/factory/utilities.d.ts.map +1 -0
- package/compiler/factory/utilitiesPublic.d.ts +4 -0
- package/compiler/factory/utilitiesPublic.d.ts.map +1 -0
- package/compiler/lpcFileHandler.d.ts +10 -0
- package/compiler/lpcFileHandler.d.ts.map +1 -0
- package/compiler/lpcJsHelpers.d.ts +17 -0
- package/compiler/lpcJsHelpers.d.ts.map +1 -0
- package/compiler/lpcbuild.d.ts +2 -0
- package/compiler/lpcbuild.d.ts.map +1 -0
- package/compiler/lpcbuildPublic.d.ts +26 -0
- package/compiler/lpcbuildPublic.d.ts.map +1 -0
- package/compiler/moduleNameResolver.d.ts +55 -0
- package/compiler/moduleNameResolver.d.ts.map +1 -0
- package/compiler/moduleSpecifiers.d.ts +2 -0
- package/compiler/moduleSpecifiers.d.ts.map +1 -0
- package/compiler/nodeTests.d.ts +115 -0
- package/compiler/nodeTests.d.ts.map +1 -0
- package/compiler/parser.d.ts +65 -0
- package/compiler/parser.d.ts.map +1 -0
- package/compiler/path.d.ts +2 -0
- package/compiler/path.d.ts.map +1 -0
- package/compiler/perfLoger.d.ts +2 -0
- package/compiler/perfLoger.d.ts.map +1 -0
- package/compiler/performance.d.ts +2 -0
- package/compiler/performance.d.ts.map +1 -0
- package/compiler/performanceCore.d.ts +2 -0
- package/compiler/performanceCore.d.ts.map +1 -0
- package/compiler/program.d.ts +72 -0
- package/compiler/program.d.ts.map +1 -0
- package/compiler/resolutionCache.d.ts +6 -0
- package/compiler/resolutionCache.d.ts.map +1 -0
- package/compiler/resolver.d.ts +1 -0
- package/compiler/resolver.d.ts.map +1 -0
- package/compiler/scanner.d.ts +85 -0
- package/compiler/scanner.d.ts.map +1 -0
- package/compiler/sourcemap.d.ts +2 -0
- package/compiler/sourcemap.d.ts.map +1 -0
- package/compiler/sys.d.ts +56 -0
- package/compiler/sys.d.ts.map +1 -0
- package/compiler/tracing.d.ts +31 -0
- package/compiler/tracing.d.ts.map +1 -0
- package/compiler/transformers/declarations.d.ts +2 -0
- package/compiler/transformers/declarations.d.ts.map +1 -0
- package/compiler/transformers.d.ts +2 -0
- package/compiler/transformers.d.ts.map +1 -0
- package/compiler/types.d.ts +3284 -0
- package/compiler/types.d.ts.map +1 -0
- package/compiler/utilities.d.ts +57 -0
- package/compiler/utilities.d.ts.map +1 -0
- package/compiler/utilitiesPublic.d.ts +213 -0
- package/compiler/utilitiesPublic.d.ts.map +1 -0
- package/compiler/visitorPublic.d.ts +72 -0
- package/compiler/visitorPublic.d.ts.map +1 -0
- package/compiler/watch.d.ts +2 -0
- package/compiler/watch.d.ts.map +1 -0
- package/compiler/watchPublic.d.ts +44 -0
- package/compiler/watchPublic.d.ts.map +1 -0
- package/compiler/watchUtilities.d.ts +14 -0
- package/compiler/watchUtilities.d.ts.map +1 -0
- package/config-types.d.ts +33 -0
- package/config-types.d.ts.map +1 -0
- package/harness/harnessIO.d.ts +4 -0
- package/harness/harnessIO.d.ts.map +1 -0
- package/lpc/_namespaces/lpc.d.ts +6 -0
- package/lpc/_namespaces/lpc.d.ts.map +1 -0
- package/lpc/_namespaces/lpc.server.d.ts +2 -0
- package/lpc/_namespaces/lpc.server.d.ts.map +1 -0
- package/lpc/lpc.d.ts +2 -0
- package/lpc/lpc.d.ts.map +1 -0
- package/lpcserver/document.d.ts +1 -0
- package/lpcserver/document.d.ts.map +1 -0
- package/lpcserver/nodeServer.d.ts +25 -0
- package/lpcserver/nodeServer.d.ts.map +1 -0
- package/lpcserver/protocol.const.d.ts +46 -0
- package/lpcserver/protocol.const.d.ts.map +1 -0
- package/lpcserver/server.d.ts +3 -0
- package/lpcserver/server.d.ts.map +1 -0
- package/lpcserver/textRendering.d.ts +14 -0
- package/lpcserver/textRendering.d.ts.map +1 -0
- package/lpcserver/typeConverters.d.ts +44 -0
- package/lpcserver/typeConverters.d.ts.map +1 -0
- package/lpcserver/utils.d.ts +14 -0
- package/lpcserver/utils.d.ts.map +1 -0
- package/package.json +48 -0
- package/parse-fluff-docs.d.ts +2 -0
- package/parse-fluff-docs.d.ts.map +1 -0
- package/parse-ld-docs.d.ts +2 -0
- package/parse-ld-docs.d.ts.map +1 -0
- package/server/_namespaces/lpc.d.ts +5 -0
- package/server/_namespaces/lpc.d.ts.map +1 -0
- package/server/_namespaces/lpc.server.d.ts +11 -0
- package/server/_namespaces/lpc.server.d.ts.map +1 -0
- package/server/_namespaces/lpc.server.protocol.d.ts +2 -0
- package/server/_namespaces/lpc.server.protocol.d.ts.map +1 -0
- package/server/editorServices.d.ts +261 -0
- package/server/editorServices.d.ts.map +1 -0
- package/server/project.d.ts +143 -0
- package/server/project.d.ts.map +1 -0
- package/server/protocol.d.ts +962 -0
- package/server/protocol.d.ts.map +1 -0
- package/server/scriptInfo.d.ts +53 -0
- package/server/scriptInfo.d.ts.map +1 -0
- package/server/scriptVersionCache.d.ts +2 -0
- package/server/scriptVersionCache.d.ts.map +1 -0
- package/server/session.d.ts +150 -0
- package/server/session.d.ts.map +1 -0
- package/server/types.d.ts +24 -0
- package/server/types.d.ts.map +1 -0
- package/server/utilities.d.ts +2 -0
- package/server/utilities.d.ts.map +1 -0
- package/server/utilitiesPublic.d.ts +37 -0
- package/server/utilitiesPublic.d.ts.map +1 -0
- package/server.d.ts +2 -0
- package/server.d.ts.map +1 -0
- package/services/_namespaces/lpc.Completions.StringCompletions.d.ts +2 -0
- package/services/_namespaces/lpc.Completions.StringCompletions.d.ts.map +1 -0
- package/services/_namespaces/lpc.Completions.d.ts +4 -0
- package/services/_namespaces/lpc.Completions.d.ts.map +1 -0
- package/services/_namespaces/lpc.FindAllReferences.d.ts +3 -0
- package/services/_namespaces/lpc.FindAllReferences.d.ts.map +1 -0
- package/services/_namespaces/lpc.GoToDefinition.d.ts +2 -0
- package/services/_namespaces/lpc.GoToDefinition.d.ts.map +1 -0
- package/services/_namespaces/lpc.JsDoc.d.ts +2 -0
- package/services/_namespaces/lpc.JsDoc.d.ts.map +1 -0
- package/services/_namespaces/lpc.NavigationBar.d.ts +2 -0
- package/services/_namespaces/lpc.NavigationBar.d.ts.map +1 -0
- package/services/_namespaces/lpc.Rename.d.ts +2 -0
- package/services/_namespaces/lpc.Rename.d.ts.map +1 -0
- package/services/_namespaces/lpc.SignatureHelp.d.ts +2 -0
- package/services/_namespaces/lpc.SignatureHelp.d.ts.map +1 -0
- package/services/_namespaces/lpc.SymbolDisplay.d.ts +2 -0
- package/services/_namespaces/lpc.SymbolDisplay.d.ts.map +1 -0
- package/services/_namespaces/lpc.codefix.d.ts +3 -0
- package/services/_namespaces/lpc.codefix.d.ts.map +1 -0
- package/services/_namespaces/lpc.d.ts +30 -0
- package/services/_namespaces/lpc.d.ts.map +1 -0
- package/services/_namespaces/lpc.formatting.d.ts +7 -0
- package/services/_namespaces/lpc.formatting.d.ts.map +1 -0
- package/services/_namespaces/lpc.textChanges.d.ts +2 -0
- package/services/_namespaces/lpc.textChanges.d.ts.map +1 -0
- package/services/classifier2020.d.ts +2 -0
- package/services/classifier2020.d.ts.map +1 -0
- package/services/codefixes/helpers.d.ts +2 -0
- package/services/codefixes/helpers.d.ts.map +1 -0
- package/services/codefixes/importFixes.d.ts +2 -0
- package/services/codefixes/importFixes.d.ts.map +1 -0
- package/services/completions.d.ts +2 -0
- package/services/completions.d.ts.map +1 -0
- package/services/documentRegistry.d.ts +90 -0
- package/services/documentRegistry.d.ts.map +1 -0
- package/services/exportInfoMap.d.ts +5 -0
- package/services/exportInfoMap.d.ts.map +1 -0
- package/services/findAllReferences.d.ts +2 -0
- package/services/findAllReferences.d.ts.map +1 -0
- package/services/formatting/formatting.d.ts +2 -0
- package/services/formatting/formatting.d.ts.map +1 -0
- package/services/formatting/formattingContext.d.ts +2 -0
- package/services/formatting/formattingContext.d.ts.map +1 -0
- package/services/formatting/rule.d.ts +2 -0
- package/services/formatting/rule.d.ts.map +1 -0
- package/services/formatting/rules.d.ts +2 -0
- package/services/formatting/rules.d.ts.map +1 -0
- package/services/formatting/rulesMap.d.ts +2 -0
- package/services/formatting/rulesMap.d.ts.map +1 -0
- package/services/formatting/smartIndenter.d.ts +2 -0
- package/services/formatting/smartIndenter.d.ts.map +1 -0
- package/services/goToDefinition.d.ts +2 -0
- package/services/goToDefinition.d.ts.map +1 -0
- package/services/importTracker.d.ts +2 -0
- package/services/importTracker.d.ts.map +1 -0
- package/services/jsDoc.d.ts +2 -0
- package/services/jsDoc.d.ts.map +1 -0
- package/services/navigationBar.d.ts +2 -0
- package/services/navigationBar.d.ts.map +1 -0
- package/services/rename.d.ts +2 -0
- package/services/rename.d.ts.map +1 -0
- package/services/services.d.ts +54 -0
- package/services/services.d.ts.map +1 -0
- package/services/signatureHelp.d.ts +2 -0
- package/services/signatureHelp.d.ts.map +1 -0
- package/services/sourcemaps.d.ts +2 -0
- package/services/sourcemaps.d.ts.map +1 -0
- package/services/stringCompletions.d.ts +2 -0
- package/services/stringCompletions.d.ts.map +1 -0
- package/services/suggestionDiagnostics.d.ts +2 -0
- package/services/suggestionDiagnostics.d.ts.map +1 -0
- package/services/symbolDisplay.d.ts +2 -0
- package/services/symbolDisplay.d.ts.map +1 -0
- package/services/textChanges.d.ts +2 -0
- package/services/textChanges.d.ts.map +1 -0
- package/services/types.d.ts +901 -0
- package/services/types.d.ts.map +1 -0
- package/services/utilities.d.ts +3 -0
- package/services/utilities.d.ts.map +1 -0
- package/src/cli.js +58 -0
- package/src/cli.js.map +7 -0
- package/src/efuns/fluffos/arrays.h +205 -0
- package/src/efuns/fluffos/async.h +84 -0
- package/src/efuns/fluffos/buffers.h +80 -0
- package/src/efuns/fluffos/calls.h +275 -0
- package/src/efuns/fluffos/contrib.h +805 -0
- package/src/efuns/fluffos/db.h +125 -0
- package/src/efuns/fluffos/driver.h +107 -0
- package/src/efuns/fluffos/ed.h +48 -0
- package/src/efuns/fluffos/efuns.fluffos.h +75 -0
- package/src/efuns/fluffos/external.h +30 -0
- package/src/efuns/fluffos/filesystem.h +154 -0
- package/src/efuns/fluffos/floats.h +136 -0
- package/src/efuns/fluffos/functions.h +104 -0
- package/src/efuns/fluffos/general.h +548 -0
- package/src/efuns/fluffos/interactive.h +777 -0
- package/src/efuns/fluffos/internals.h +455 -0
- package/src/efuns/fluffos/lpc-config.json +10 -0
- package/src/efuns/fluffos/mappings.h +205 -0
- package/src/efuns/fluffos/misc.h +43 -0
- package/src/efuns/fluffos/mudlib.h +228 -0
- package/src/efuns/fluffos/numbers.h +41 -0
- package/src/efuns/fluffos/objects.h +365 -0
- package/src/efuns/fluffos/parsing.h +220 -0
- package/src/efuns/fluffos/pcre.h +75 -0
- package/src/efuns/fluffos/sockets.h +276 -0
- package/src/efuns/fluffos/strings.h +542 -0
- package/src/efuns/fluffos/system.h +408 -0
- package/src/efuns/fluffos/zh-cn/arrays.zh-cn.h +167 -0
- package/src/efuns/fluffos/zh-cn/async.zh-cn.h +81 -0
- package/src/efuns/fluffos/zh-cn/buffers.zh-cn.h +69 -0
- package/src/efuns/fluffos/zh-cn/calls.zh-cn.h +242 -0
- package/src/efuns/fluffos/zh-cn/contrib.zh-cn.h +767 -0
- package/src/efuns/fluffos/zh-cn/db.zh-cn.h +113 -0
- package/src/efuns/fluffos/zh-cn/ed.zh-cn.h +42 -0
- package/src/efuns/fluffos/zh-cn/efuns.fluffos.h +76 -0
- package/src/efuns/fluffos/zh-cn/external.zh-cn.h +25 -0
- package/src/efuns/fluffos/zh-cn/filesystem.zh-cn.h +140 -0
- package/src/efuns/fluffos/zh-cn/floats.zh-cn.h +129 -0
- package/src/efuns/fluffos/zh-cn/functions.zh-cn.h +87 -0
- package/src/efuns/fluffos/zh-cn/general.zh-cn.h +506 -0
- package/src/efuns/fluffos/zh-cn/interactive.zh-cn.h +659 -0
- package/src/efuns/fluffos/zh-cn/internals.zh-cn.h +356 -0
- package/src/efuns/fluffos/zh-cn/mappings.zh-cn.h +188 -0
- package/src/efuns/fluffos/zh-cn/misc.zh-cn.h +43 -0
- package/src/efuns/fluffos/zh-cn/mudlib.zh-cn.h +190 -0
- package/src/efuns/fluffos/zh-cn/numbers.zh-cn.h +36 -0
- package/src/efuns/fluffos/zh-cn/objects.zh-cn.h +280 -0
- package/src/efuns/fluffos/zh-cn/parsing.zh-cn.h +212 -0
- package/src/efuns/fluffos/zh-cn/pcre.zh-cn.h +67 -0
- package/src/efuns/fluffos/zh-cn/sockets.zh-cn.h +230 -0
- package/src/efuns/fluffos/zh-cn/strings.zh-cn.h +484 -0
- package/src/efuns/fluffos/zh-cn/system.zh-cn.h +366 -0
- package/src/efuns/ldmud/defines.h +69 -0
- package/src/efuns/ldmud/efun.h +10449 -0
- package/src/efuns/ldmud/efuns.ldmud.h +87 -0
- package/src/efuns/ldmud/lpc-config.json +9 -0
- package/src/efuns/ldmud/obsolete.h +2168 -0
- package/src/lpc.js +82486 -0
- package/src/lpc.js.map +6 -0
- package/src/server.js +129 -0
- package/src/server.js.map +7 -0
- package/types.d.ts +23 -0
- package/types.d.ts.map +1 -0
- package/utils.d.ts +21 -0
- package/utils.d.ts.map +1 -0
|
@@ -0,0 +1,212 @@
|
|
|
1
|
+
// parsing.h
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* query_verb() - 返回当前正在执行的命令名称
|
|
5
|
+
*
|
|
6
|
+
* 给出当前命令的名称,如果不是从命令执行,则返回 0。
|
|
7
|
+
* 此函数在多个命令(动词)可能导致同一函数执行时非常有用,
|
|
8
|
+
* 需要确定是哪个动词调用了此函数。
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
string query_verb( void );
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* process_value() - 从描述的函数调用中获取一个值
|
|
15
|
+
*
|
|
16
|
+
* 获取一个语法模式的替代。模式的形式为:
|
|
17
|
+
*
|
|
18
|
+
* "function[:filename][|arg1|arg2....|argN]"
|
|
19
|
+
*
|
|
20
|
+
* 返回的值可以是任何类型。
|
|
21
|
+
*
|
|
22
|
+
* 注意对象和参数都是用括号标记为可选的,
|
|
23
|
+
* 并且括号不包含在实际模式中。
|
|
24
|
+
*
|
|
25
|
+
*/
|
|
26
|
+
mixed process_value( string calldescription );
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* process_string() - 返回替换了调用描述的字符串
|
|
30
|
+
*
|
|
31
|
+
* 通过用在解释模式时返回的内容替换特定的语法模式来处理字符串。
|
|
32
|
+
*
|
|
33
|
+
* 语法模式的形式为:
|
|
34
|
+
*
|
|
35
|
+
* "@@function[:filename][|arg1|arg2....|argN]@@"
|
|
36
|
+
*
|
|
37
|
+
* 这被解释为一次调用:
|
|
38
|
+
*
|
|
39
|
+
* filename->function(arg1, arg2, ....., argN)
|
|
40
|
+
*
|
|
41
|
+
* 注意 process_string 不会递归处理返回的替代值。
|
|
42
|
+
* 如果一个函数返回另一个语法模式,该描述将不会被替换。
|
|
43
|
+
*
|
|
44
|
+
* 在 'combinestring' 中的所有此类出现都会被处理并替换,
|
|
45
|
+
* 如果返回值是字符串的话。如果返回值不是字符串,
|
|
46
|
+
* 则该模式将保持未替换状态。
|
|
47
|
+
*
|
|
48
|
+
* 注意对象和参数都是用括号标记为可选的,
|
|
49
|
+
* 并且括号不包含在实际模式中。
|
|
50
|
+
*
|
|
51
|
+
* 一个字符串:
|
|
52
|
+
* "你被 @@query_the_name:/obj/monster#123@@ 向东追赶。"
|
|
53
|
+
*
|
|
54
|
+
* 被替换为:
|
|
55
|
+
* "你被兽人向东追赶。"
|
|
56
|
+
*
|
|
57
|
+
* 假设 monster#123 中的 query_the_name 返回 "兽人"。
|
|
58
|
+
*
|
|
59
|
+
*/
|
|
60
|
+
string process_string( string combinestring );
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* parse_sentence() - 解析给定字符串中的命令
|
|
64
|
+
*
|
|
65
|
+
* 此 efun 调用驱动程序解析器,并告诉它解析并执行
|
|
66
|
+
* 给定字符串中的命令。该 efun 可能返回一个整数
|
|
67
|
+
* 错误代码,或一个字符串错误消息。如果返回字符串消息,
|
|
68
|
+
* 应该显示给玩家。整数代码为:
|
|
69
|
+
*
|
|
70
|
+
* * 1: 命令处理正常
|
|
71
|
+
* * 0: 未找到匹配命令,没有处理
|
|
72
|
+
* * -1: 找到匹配命令但没有匹配任何规则。
|
|
73
|
+
* * -2: 一条规则有意义,但所有 "can" 或 "direct" 应用都返回 0。
|
|
74
|
+
*
|
|
75
|
+
*/
|
|
76
|
+
mixed parse_sentence(string, void | int, void | object *, void | mapping);
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* parse_refresh()
|
|
80
|
+
*
|
|
81
|
+
* 解析包缓存有关对象的信息以提高性能。
|
|
82
|
+
* 这意味着如果任何缓存的信息发生变化,
|
|
83
|
+
* 你需要告诉 MudOS 清除缓存。这就是此 efun 的作用。
|
|
84
|
+
* 如果下面的任何应用返回的信息发生变化,
|
|
85
|
+
* 你需要调用 parse_refresh() 以便解析器知道它已改变。
|
|
86
|
+
* 例如,如果对象的名称发生变化,或者在施法将其
|
|
87
|
+
* 从蓝色变为红色时,形容词发生变化 - 之后调用 parse_refresh()。
|
|
88
|
+
* 此 efun 会清除调用它的对象的缓存。
|
|
89
|
+
*
|
|
90
|
+
*/
|
|
91
|
+
void parse_refresh();
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* parse_init()
|
|
95
|
+
*
|
|
96
|
+
* efun parse_init() 用于告诉 MudOS 该对象
|
|
97
|
+
* 可能会被解析包使用或被使用。如果你的对象
|
|
98
|
+
* 没有调用此方法,则尝试使用其他解析 efuns 将
|
|
99
|
+
* 产生运行时错误,解析器在搜索匹配项时将忽略该对象。
|
|
100
|
+
* 建议在标准对象的 create() 中调用 parse_init()。
|
|
101
|
+
*
|
|
102
|
+
*/
|
|
103
|
+
void parse_init();
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* parse_command() - 尝试将字符串与给定模式匹配
|
|
107
|
+
*
|
|
108
|
+
* parse_command() 是一个改进版的 sscanf(3),
|
|
109
|
+
* 以单词为基础操作。它的工作原理类似于 sscanf(3),
|
|
110
|
+
* 需要一个模式和一个可变参数集合作为目标。
|
|
111
|
+
* 仅与 sscanf(3) 一起,是唯一的 efun 使用引用传递
|
|
112
|
+
* 其他变量而不是数组。也就是说,parse_command() 返回
|
|
113
|
+
* 值在其参数中。
|
|
114
|
+
*
|
|
115
|
+
* 如果 'command' 被认为与 'pattern' 匹配,
|
|
116
|
+
* parse_command() 返回 1。
|
|
117
|
+
*
|
|
118
|
+
* 'env' 或 'oblist' 参数可以持有一个对象,
|
|
119
|
+
* 或对象的列表。如果它持有单个对象,则通过
|
|
120
|
+
* 添加对象的深度库存自动创建对象的列表,
|
|
121
|
+
* 即这两者是相同的:
|
|
122
|
+
*
|
|
123
|
+
* parse_command(cmd, environment(), pattern, arg)
|
|
124
|
+
*
|
|
125
|
+
* 和
|
|
126
|
+
*
|
|
127
|
+
* parse_command( cmd, ({ environment() }) +
|
|
128
|
+
* deep_inventory(environment()), pattern, arg)
|
|
129
|
+
*
|
|
130
|
+
* 'pattern' 是一个单词和格式的列表:
|
|
131
|
+
*
|
|
132
|
+
* 示例字符串 = " 'get' / 'take' %i "
|
|
133
|
+
* 语法:
|
|
134
|
+
* 'word' 必需文本
|
|
135
|
+
* [word] 可选文本
|
|
136
|
+
* / 选择标记
|
|
137
|
+
* %o 单个项目,对象
|
|
138
|
+
* %l 活动对象
|
|
139
|
+
* %s 任何文本
|
|
140
|
+
* %w 任何单词
|
|
141
|
+
* %p 列表中的一个(介词)
|
|
142
|
+
* %i 任何项目
|
|
143
|
+
* %d 数字 0- 或 tx(0-99)
|
|
144
|
+
*
|
|
145
|
+
* 'arg' 列表是零个或多个参数。这些是结果变量,
|
|
146
|
+
* 如同 sscanf。注意每个 %_ 需要一个变量。
|
|
147
|
+
*
|
|
148
|
+
* 不同 %_ 的返回类型:
|
|
149
|
+
* %o 返回一个对象
|
|
150
|
+
* %s 返回一个字符串的单词
|
|
151
|
+
* %w 返回一个字符串的一个单词
|
|
152
|
+
* %p 可以在输入时持有一个字词的列表数组
|
|
153
|
+
* 或一个空变量
|
|
154
|
+
* 返回:
|
|
155
|
+
* 如果空变量:返回一个字符串
|
|
156
|
+
* 如果数组:array[0] = 匹配单词
|
|
157
|
+
* %i 返回一个特殊数组形式:
|
|
158
|
+
* [0] = (int) +(wanted) -(order) 0(all)
|
|
159
|
+
* [1..n] (object) 对象指针
|
|
160
|
+
* %l 返回一个特殊数组形式:
|
|
161
|
+
* [0] = (int) +(wanted) -(order) 0(all)
|
|
162
|
+
* [1..n] (object) 对象指针
|
|
163
|
+
* 这些仅是生物对象。
|
|
164
|
+
* %d 返回一个数字
|
|
165
|
+
*
|
|
166
|
+
* 唯一使用从对象加载的所有信息的 % 类型是 %i 和 %l。
|
|
167
|
+
* 这些实际上是相同的,只是 %l 从对象列表中
|
|
168
|
+
* 过滤出所有非生物对象。
|
|
169
|
+
*
|
|
170
|
+
* %i 和 %l 的返回值也是最复杂的。它们返回一个数组,
|
|
171
|
+
* 首先是一个数字,然后是所有可能的匹配对象。
|
|
172
|
+
* 一个典型的字符串被 %i/%l 匹配,看起来像:
|
|
173
|
+
* '三朵红玫瑰','所有可恶的虫子' 或 '第二把蓝剑',
|
|
174
|
+
* 数字表明匹配的是哪个数字构造:
|
|
175
|
+
*
|
|
176
|
+
* 如果数字 >0 则匹配的是三、四、五等
|
|
177
|
+
* 如果数字 <0 则匹配的是第二、二十一等
|
|
178
|
+
* 如果数字==0 则匹配的是 '所有' 或通用复数形式,
|
|
179
|
+
* 如 '苹果'。
|
|
180
|
+
*
|
|
181
|
+
* 如果 (parse_command("spray car",environment(this_player()),
|
|
182
|
+
* " 'spray' / 'paint' [paint] %i ",items))
|
|
183
|
+
* {
|
|
184
|
+
* /*
|
|
185
|
+
* 如果模式匹配成功那么 items 持有的是一个返回数组,
|
|
186
|
+
* 如上述 'destargs' %i 所描述的那样。
|
|
187
|
+
* *\/
|
|
188
|
+
* }
|
|
189
|
+
*
|
|
190
|
+
*/
|
|
191
|
+
int parse_command( string command, object|object* env,
|
|
192
|
+
string pattern, mixed arg... );
|
|
193
|
+
|
|
194
|
+
/**
|
|
195
|
+
* parse_add_rule() - 为动词添加解析规则
|
|
196
|
+
*
|
|
197
|
+
* 此处 "verb" 是命令词(例如 "look","read" 等),
|
|
198
|
+
* "rule" 是要添加的解析规则。规则由两部分构成 -
|
|
199
|
+
* 令牌和介词。令牌用于匹配各种对象或字符串,
|
|
200
|
+
* 而介词是用来指定含义的固定位置词(如 "with" 或 "in")。
|
|
201
|
+
*
|
|
202
|
+
* MudOS 接受我知道的六个令牌:
|
|
203
|
+
*
|
|
204
|
+
* OBJ - 匹配单个对象
|
|
205
|
+
* OBS - 匹配一个或多个对象
|
|
206
|
+
* LIV - 匹配单个生物对象
|
|
207
|
+
* LVS - 匹配一个或多个生物对象
|
|
208
|
+
* WRD - 匹配单个单词
|
|
209
|
+
* STR - 匹配一个或多个单词
|
|
210
|
+
*
|
|
211
|
+
*/
|
|
212
|
+
void parse_add_rule(string verb, string rule);
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// pcre.h
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* pcre_version() - 返回使用的已编译PCRE库的版本
|
|
5
|
+
*
|
|
6
|
+
* 返回使用的已编译PCRE库的版本
|
|
7
|
+
*
|
|
8
|
+
*/
|
|
9
|
+
string pcre_version(void);
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* pcre_replace_callback() - 字符串替换使用回调函数获取替换字符串
|
|
13
|
+
*
|
|
14
|
+
* 返回一个字符串,其中所有捕获的组已被函数指针fun或对象ob中的函数fun的返回值替换。(使用匹配字符串和匹配编号调用,编号从0开始)
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
string pcre_replace_callback(string input, string pattern, string|function, mixed *args...);
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* pcre_replace()
|
|
21
|
+
*
|
|
22
|
+
* 返回一个字符串,其中所有捕获的组已被替换数组的元素替换。子组数量和替换数组的大小必须匹配。
|
|
23
|
+
*
|
|
24
|
+
*/
|
|
25
|
+
string pcre_replace(string input, string pattern, string *replacments);
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* pcre_match_all() - 查找所有匹配项
|
|
29
|
+
*
|
|
30
|
+
* 类似于php的preg_match_all,这个EFUN返回一个字符串数组的数组,包含所有匹配项和捕获的组。
|
|
31
|
+
*
|
|
32
|
+
*/
|
|
33
|
+
mixed pcre_match_all(string input, string pattern);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* pcre_match() - 正则表达式处理器
|
|
37
|
+
*
|
|
38
|
+
* 由于向后兼容的原因与正则表达式efun类似,但利用了PCRE库。
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
mixed pcre_match(string|string *lines, string pattern, void|int flag);
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* pcre_extract() - 提取匹配部分
|
|
45
|
+
*
|
|
46
|
+
* 返回模式中指定的捕获组的数组。
|
|
47
|
+
*
|
|
48
|
+
*/
|
|
49
|
+
string *pcre_extract(string input, string pattern);
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* pcre_cache() - 返回pcre缓存的内容
|
|
53
|
+
*
|
|
54
|
+
* 返回pcre缓存的内容(不是很有用)。
|
|
55
|
+
*
|
|
56
|
+
*/
|
|
57
|
+
mapping pcre_cache(void);
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* pcre_assoc() - 正则模式子字符串提取器
|
|
61
|
+
*
|
|
62
|
+
* 由于向后兼容的原因与reg_assoc efun类似,但利用了PCRE库。
|
|
63
|
+
*
|
|
64
|
+
*/
|
|
65
|
+
varargs mixed *pcre_assoc(string input, string *patterns,
|
|
66
|
+
mixed *token_aray,
|
|
67
|
+
mixed default_value);
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
// sockets.h
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* socket_write() - 从套接字发送消息
|
|
5
|
+
*
|
|
6
|
+
* socket_write() 在套接字 s 上发送一条消息。如果套接字 s 的类型是
|
|
7
|
+
* STREAM 或 MUD,则该套接字必须已经连接,且地址未指定。如果套接字
|
|
8
|
+
* 是 DATAGRAM 类型,则必须指定地址。地址的格式为:"127.0.0.1 23"。
|
|
9
|
+
*
|
|
10
|
+
*/
|
|
11
|
+
int socket_write( int s, mixed message,
|
|
12
|
+
void | string address );
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* socket_status() - 显示每个 LPC 套接字的状态
|
|
16
|
+
*
|
|
17
|
+
* socket_status() 返回一个数组,每个套接字对应一个数组。
|
|
18
|
+
*
|
|
19
|
+
*/
|
|
20
|
+
mixed *socket_status(void | int);
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* socket_release() - 将套接字的所有权转移给另一个对象
|
|
24
|
+
*
|
|
25
|
+
* socket_release() 用于将套接字的所有权(和控制权)转移给另一个
|
|
26
|
+
* 对象。这在处理连接设置的守护进程对象(如 inetd)中非常有用。
|
|
27
|
+
* 它会在将一个已连接的套接字转移给另一个对象以便进一步处理时使用。
|
|
28
|
+
*
|
|
29
|
+
* 套接字所有权的转移涉及到当前所有者对象与欲转移的套接字之间的
|
|
30
|
+
* 握手。当调用 socket_release() 时,握手被引发。socket_release()
|
|
31
|
+
* 执行适当的安全/完整性检查,然后调用对象 ob 中的 release_callback
|
|
32
|
+
* 函数。此函数用于通知 ob 套接字所有权正在转移给它。随后,ob 有
|
|
33
|
+
* 责任在释放回调函数内调用 socket_acquire()。如果调用了 socket_acquire()
|
|
34
|
+
* ,则握手完成,套接字所有权成功转移至 ob。如果 ob 不接受套接字的
|
|
35
|
+
* 责任而不调用 socket_acquire(),则所有权不发生变化,当前的套接字
|
|
36
|
+
* 拥有者必须自行决定如何响应。
|
|
37
|
+
*
|
|
38
|
+
* 如果套接字所有者成功转移,则 socket_release() 返回 EESUCCESS。如果
|
|
39
|
+
* ob 不接受套接字所有权,则返回 EESOCKNOTRLSD。其他错误可能基于
|
|
40
|
+
* 安全违规、无效的套接字描述符值等返回。
|
|
41
|
+
*
|
|
42
|
+
*/
|
|
43
|
+
int socket_release( int socket, object ob,
|
|
44
|
+
string release_callback );
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* socket_listen() - 监听套接字上的连接
|
|
48
|
+
*
|
|
49
|
+
* 要接受连接,首先使用 socket_create(3) 创建一个套接字,然后使用
|
|
50
|
+
* socket_listen(3) 将套接字置于监听模式,并使用 socket_accept(3)
|
|
51
|
+
* 接受连接。socket_listen() 调用仅适用于 STREAM 或 MUD 类型的
|
|
52
|
+
* 套接字。
|
|
53
|
+
*
|
|
54
|
+
* 参数 listen_callback 是在监听套接字上请求连接时,驱动程序要调用
|
|
55
|
+
* 的一个函数的名称。监听回调函数应遵循以下格式:
|
|
56
|
+
*
|
|
57
|
+
* void listen_callback(int fd)
|
|
58
|
+
*
|
|
59
|
+
* 其中 fd 是监听套接字。
|
|
60
|
+
*
|
|
61
|
+
*/
|
|
62
|
+
int socket_listen( int s, string listen_callback );
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* socket_error() - 返回套接字错误的文本描述
|
|
66
|
+
*
|
|
67
|
+
* socket_error() 返回一个字符串,描述由 error 表示的错误。
|
|
68
|
+
*
|
|
69
|
+
*/
|
|
70
|
+
string socket_error( int error );
|
|
71
|
+
|
|
72
|
+
/**
|
|
73
|
+
* socket_create() - 创建一个 efun 套接字
|
|
74
|
+
*
|
|
75
|
+
* socket_create() 创建一个 efun 套接字。mode 决定创建的套接字类型。
|
|
76
|
+
* 当前支持的套接字模式有:
|
|
77
|
+
*
|
|
78
|
+
* 0 MUD 使用 TCP 协议发送 LPC 数据类型。
|
|
79
|
+
*
|
|
80
|
+
* 1 STREAM 使用 TCP 协议发送原始数据。
|
|
81
|
+
*
|
|
82
|
+
* 2 DATAGRAM 使用 UDP 协议。
|
|
83
|
+
*
|
|
84
|
+
* 3 STREAM_BINARY 使用 TCP 协议交换二进制消息。
|
|
85
|
+
*
|
|
86
|
+
* 4 DATAGRAM_BINARY 使用 UDP 协议交换二进制消息。
|
|
87
|
+
*
|
|
88
|
+
* 参数 read_callback 是在套接字从其对等体获取数据时,驱动程序要调用
|
|
89
|
+
* 的一个函数的名称。读取回调应遵循以下格式:
|
|
90
|
+
*
|
|
91
|
+
* void read_callback(int fd, mixed message, string addr)
|
|
92
|
+
*
|
|
93
|
+
* 其中 fd 是接收到数据的套接字,message 是接收到的数据,addr 是客户的地址。
|
|
94
|
+
*
|
|
95
|
+
* 在非二进制模式下,message 将使用 UTF8 编码进行清理并作为字符串返回。
|
|
96
|
+
*
|
|
97
|
+
* 在二进制模式下,原始消息将作为缓冲区返回。
|
|
98
|
+
*
|
|
99
|
+
* 参数 close_callback 是在套接字意外关闭时(即不是由于 socket_close(3)
|
|
100
|
+
* 调用的结果),驱动程序要调用的一个函数的名称。关闭回调应遵循
|
|
101
|
+
* 以下格式:
|
|
102
|
+
*
|
|
103
|
+
* void close_callback(int fd)
|
|
104
|
+
*
|
|
105
|
+
* 其中 fd 是已关闭的套接字。注意:close_callback 不适用于 DATAGRAM 模式的套接字。
|
|
106
|
+
*
|
|
107
|
+
*/
|
|
108
|
+
int socket_create( int mode, string read_callback,
|
|
109
|
+
void | string close_callback );
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* socket_connect() - 在套接字上发起连接
|
|
113
|
+
*
|
|
114
|
+
* 参数 s 是一个套接字,s 必须是 STREAM 模式或 MUD 模式的套接字。
|
|
115
|
+
* address 是套接字尝试连接的地址。address 的格式为:"127.0.0.1 23"
|
|
116
|
+
*
|
|
117
|
+
* 参数 read_callback 是在套接字从其对等体获取数据时,驱动程序要调用
|
|
118
|
+
* 的一个函数的名称。读取回调应遵循以下格式:
|
|
119
|
+
*
|
|
120
|
+
* void read_callback(int fd, mixed message)
|
|
121
|
+
*
|
|
122
|
+
* 其中 fd 是接收到数据的套接字,message 是接收到的数据。
|
|
123
|
+
*
|
|
124
|
+
* 参数 write_callback 是在套接字准备好写入时,驱动程序要调用的一个
|
|
125
|
+
* 函数的名称。写入回调应遵循以下格式:
|
|
126
|
+
*
|
|
127
|
+
* void write_callback(int fd)
|
|
128
|
+
*
|
|
129
|
+
* 其中 fd 是准备好写入的套接字。
|
|
130
|
+
*
|
|
131
|
+
*/
|
|
132
|
+
int socket_connect( int s, string address,
|
|
133
|
+
string read_callback,
|
|
134
|
+
string write_callback );
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* socket_close() - 关闭一个套接字
|
|
138
|
+
*
|
|
139
|
+
* socket_close() 关闭套接字 s。这将释放一个套接字 efun 槽以供使用。
|
|
140
|
+
*
|
|
141
|
+
*/
|
|
142
|
+
int socket_close( int s );
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* socket_bind() - 将名称绑定到一个套接字
|
|
146
|
+
*
|
|
147
|
+
* socket_bind() 将一个名称分配给一个未命名的套接字。当通过 socket_create(3)
|
|
148
|
+
* 创建一个套接字时,它存在于一个命名空间(地址族)中,但未分配名称。
|
|
149
|
+
* socket_bind() 请求将端口分配给套接字 s。
|
|
150
|
+
*
|
|
151
|
+
*/
|
|
152
|
+
int socket_bind( int s, int port );
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* socket_address() - 返回 efun 套接字的远程地址
|
|
156
|
+
*
|
|
157
|
+
* socket_address() 返回 efun 套接字 s 的远程地址。返回的地址格式为:
|
|
158
|
+
*
|
|
159
|
+
* "127.0.0.1 23"。
|
|
160
|
+
*
|
|
161
|
+
*/
|
|
162
|
+
string socket_address( int s );
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* socket_acquire() - 假定一个套接字的所有权
|
|
166
|
+
*
|
|
167
|
+
* socket_acquire() 是在 socket_release() 开始的握手中调用,以将
|
|
168
|
+
* 套接字的所有权(和控制权)转移给一个新对象。socket_release() 在
|
|
169
|
+
* 新拥有者对象内调用释放回调函数,以通知该对象希望将套接字的控制权
|
|
170
|
+
* 转交给它。新的所有者套接字需要决定是否希望接受该套接字。如果接受,
|
|
171
|
+
* 则调用 socket_acquire() 完成转移。如果不接受,则回调函数简单返回
|
|
172
|
+
* 而不完成握手。
|
|
173
|
+
*
|
|
174
|
+
* 在前一种情况下,握手完成,新对象成为套接字所有者。读取、写入和关闭
|
|
175
|
+
* 回调函数参数指的是新对象内的函数。这些参数是为了让 MudOS 驱动程序
|
|
176
|
+
* 知道在新对象内调用哪些函数。拒绝获取套接字将导致 socket_release()
|
|
177
|
+
* 返回 EESOCKNOTRLSD,从而使所有者能够执行适当的清理。
|
|
178
|
+
*
|
|
179
|
+
* socket_acquire() 只能在释放回调函数的上下文中调用,并且只能与指定的
|
|
180
|
+
* 套接字一起调用。
|
|
181
|
+
*
|
|
182
|
+
*/
|
|
183
|
+
int socket_acquire( int socket, string read_callback,
|
|
184
|
+
string write_callback,
|
|
185
|
+
string close_callback );
|
|
186
|
+
|
|
187
|
+
/**
|
|
188
|
+
* socket_accept() - 在套接字上接受连接
|
|
189
|
+
*
|
|
190
|
+
* 参数 s 是一个通过 socket_create(3) 创建的套接字,已通过
|
|
191
|
+
* socket_bind(3) 绑定到地址,并在 socket_listen(3) 后开始监听
|
|
192
|
+
* 连接。socket_accept() 从待处理连接的队列中提取第一个连接,创建
|
|
193
|
+
* 一个具有与 s 相同属性的新套接字,并为该套接字分配新的文件描述符。
|
|
194
|
+
* 如果在队列上没有待处理连接,socket_accept() 将返回一个错误,如
|
|
195
|
+
* 下所述。已接受的套接字用于从这个套接字读取和写入数据;它不用于
|
|
196
|
+
* 接受更多连接。原始套接字 s 仍然打开以接受进一步连接。
|
|
197
|
+
*
|
|
198
|
+
* 参数 read_callback 是当新套接字(而非接受套接字)接收到数据时,
|
|
199
|
+
* 驱动程序要调用的一个函数的名称。读取回调应遵循以下格式:
|
|
200
|
+
*
|
|
201
|
+
* void read_callback(int fd)
|
|
202
|
+
*
|
|
203
|
+
* 其中 fd 是准备接受数据的套接字。
|
|
204
|
+
*
|
|
205
|
+
* 参数 write_callback 是当新套接字(而非接受套接字)准备好写入时,
|
|
206
|
+
* 驱动程序要调用的一个函数的名称。写入回调应遵循以下格式:
|
|
207
|
+
*
|
|
208
|
+
* void write_callback(int fd)
|
|
209
|
+
*
|
|
210
|
+
* 其中 fd 是准备好写入的套接字。
|
|
211
|
+
*
|
|
212
|
+
* 注意:如果新套接字意外关闭,即不是由于 socket_close(3) 调用的结果,
|
|
213
|
+
* 接受套接字的 close_callback 会被调用。关闭回调应遵循以下格式:
|
|
214
|
+
*
|
|
215
|
+
* void close_callback(int fd)
|
|
216
|
+
*
|
|
217
|
+
* 其中 fd 是已关闭的套接字。
|
|
218
|
+
*
|
|
219
|
+
*/
|
|
220
|
+
int socket_accept( int s, string read_callback,
|
|
221
|
+
string write_callback );
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* 设置套接字的选项。
|
|
226
|
+
* @param socket
|
|
227
|
+
* @param option
|
|
228
|
+
* @param host
|
|
229
|
+
*/
|
|
230
|
+
void socket_set_option(int socket, int option, int|string host);
|