diff --git a/Convention/[Symbolization]/Detail/Keyword.cs b/Convention/[Symbolization]/Detail/Keyword.cs
index 7e112e4..cc09a61 100644
--- a/Convention/[Symbolization]/Detail/Keyword.cs
+++ b/Convention/[Symbolization]/Detail/Keyword.cs
@@ -53,7 +53,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// name
+ /// name { ... }
///
public sealed class Namespace : Internal.Keyword
{
@@ -63,7 +63,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// FunctionName(type1 arg1, type args...) -> return-type
+ /// FunctionName(parameter-list) -> return-type { ... return return-type-instance; }
///
public sealed class FunctionDef : Internal.Keyword
{
@@ -73,7 +73,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// symbol
+ /// symbol;
///
public sealed class Return : Internal.Keyword
{
@@ -83,7 +83,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// (bool-expression)
+ /// (bool-expression) expression
///
public sealed class If : Internal.Keyword
{
@@ -103,7 +103,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// (bool-expression)
+ /// (bool-expression) expression
///
public sealed class While : Internal.Keyword
{
@@ -113,7 +113,7 @@ namespace Convention.Symbolization.Keyword
}
///
- ///
+ /// ;
///
public sealed class Break : Internal.Keyword
{
@@ -123,7 +123,7 @@ namespace Convention.Symbolization.Keyword
}
///
- ///
+ /// ;
///
public sealed class Continue : Internal.Keyword
{
@@ -133,7 +133,7 @@ namespace Convention.Symbolization.Keyword
}
///
- /// structureName
+ /// structureName { ... }
///
public sealed class Structure : Internal.Keyword
{
diff --git a/Convention/[Symbolization]/Detail/ScriptWordVariable.cs b/Convention/[Symbolization]/Detail/ScriptWordVariable.cs
new file mode 100644
index 0000000..e9a7c43
--- /dev/null
+++ b/Convention/[Symbolization]/Detail/ScriptWordVariable.cs
@@ -0,0 +1,38 @@
+namespace Convention.Symbolization.Internal
+{
+ public class ScriptWordVariable : CloneableVariable
+ {
+ public readonly string word;
+
+ public ScriptWordVariable(string word) : base("")
+ {
+ this.word = word;
+ }
+
+ public override ScriptWordVariable CloneVariable(string targetSymbolName)
+ {
+ return new ScriptWordVariable(word);
+ }
+
+ public override bool Equals(ScriptWordVariable other)
+ {
+ return other is not null && word.Equals(other.word);
+ }
+
+ public Keyword GetKeyword()
+ {
+ if(Keyword.Keywords.TryGetValue(word, out var keyword))
+ return keyword;
+ return null;
+ }
+
+ public Variable GetVariable(SymbolizationContext context)
+ {
+ if (context.Variables.TryGetValue(word, out var variable))
+ {
+ return variable;
+ }
+ return null;
+ }
+ }
+}
diff --git a/Convention/[Symbolization]/Symbolization.cs b/Convention/[Symbolization]/Symbolization.cs
index 73f3736..1a208c1 100644
--- a/Convention/[Symbolization]/Symbolization.cs
+++ b/Convention/[Symbolization]/Symbolization.cs
@@ -17,6 +17,8 @@ namespace Convention.Symbolization
}
public readonly SymbolizationContext ParentContext;
+ public readonly Dictionary> ScriptWords = new();
+ public readonly Dictionary> ScriptCommands = new();
public readonly Dictionary Variables = new();
public readonly Internal.Namespace CurrentNamespace;