Skip to content

Commit

Permalink
111
Browse files Browse the repository at this point in the history
  • Loading branch information
likecg committed Feb 8, 2024
1 parent 37e4655 commit 712df0f
Show file tree
Hide file tree
Showing 25 changed files with 1,906 additions and 1,249 deletions.
Binary file modified bin/Debug/netcoreapp3.1/SimpleLanguage.dll
Binary file not shown.
Binary file modified bin/Debug/netcoreapp3.1/SimpleLanguage.exe
Binary file not shown.
Binary file modified bin/Debug/netcoreapp3.1/SimpleLanguage.pdb
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,8 @@
"runtimeOptions": {
"additionalProbingPaths": [
"C:\\Users\\W\\.dotnet\\store\\|arch|\\|tfm|",
"C:\\Users\\W\\.nuget\\packages"
"C:\\Users\\W\\.nuget\\packages",
"C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
]
}
}
16 changes: 13 additions & 3 deletions md/data.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,12 @@ data Book #定义数据
}
]
}
data AD
AD
{
a = 20;
#td = BD 如果这样引用会报错,因为有循环引用现象
}
data BD
BD
{
ad = AD #可以引用数据,但不能引用类或者是enu
}
Expand Down Expand Up @@ -104,4 +104,14 @@ ProjectEnter
- 数据,可以转化为数据流方式 stream = Book.ToStream(); stream 是独有的Stream类型,可以直接传入class中,赋值
- 数据可以与类进行转化,但有可能有不匹配的数据丢失, BookClass bc = Book.ToClass<BookClass>();
- 类也可以向数据转化 BookClass bc = BookClass(); bd = bc.ToData<Book>(); bd则为数据类的变量。
- 数据在定义时候,可以引用其它数据,但不能引用类与枚举,但不能循环引用,否则会报错!
- 数据在定义时候,可以引用其它数据,但不能引用类与枚举,但不能循环引用,否则会报错!


data字段变化
1. data 结构体与class 结构体合并
2. data字段,在取取,或者是操作的时候,可以用data锁定关键字 data Class1 c1; qq.GetClass1( c1 ); 在取c1的时候, 在定义Class的时候 比如 data class Book{ name = "莫体" }; 可以直接Book.name 类似于static方法,但类的内容不用全部
3. data关键字在定义类的时候使用 如 Class1{ data Class2 c2; data Class3 c3; } 这种情况,内存是连续的。
4. 在传参时,如何仿制struct结构, 可以在 data Class1 getC1(){ return c1; } 这种情况,返回的是值型, 如果已定制值类,则使用= 号的时候,是进行数据全考呗的

如果想使用data怎么办
1. 在类开头使用[data],限制,这样,
168 changes: 77 additions & 91 deletions source/Compile/FileMeta/FileMetaClass.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ public partial class FileMetaClass : FileMetaBase
public bool innerClass { get; set; } = false;
public bool isConst { get { return m_ConstToken != null; } }
public bool isEnum { get { return m_EnumToken != null; } }
public bool isData { get { return m_DataToken != null; } }
//public bool isData { get { return m_DataToken != null; } }
public bool isPartial => m_PartialToken != null;
public MetaClass metaClass => m_MetaClass;
public FileMetaClassDefine extendClass => m_ExtendClass;
Expand All @@ -32,14 +32,13 @@ public partial class FileMetaClass : FileMetaBase
public NamespaceStatementBlock namespaceBlock => m_NamespaceBlock;
public List<FileMetaMemberVariable> memberVariableList => m_MemberVariableList;
public List<FileMetaMemberFunction> memberFunctionList => m_MemberFunctionList;
public List<FileMetaMemberData> memberDataList => m_MemberDataList;

#region Token
protected Token m_PermissionToken = null;
protected Token m_PartialToken = null;
protected Token m_ClassToken = null;
protected Token m_EnumToken = null;
protected Token m_DataToken = null;
//protected Token m_DataToken = null;
protected Token m_ConstToken = null;
#endregion
private MetaClass m_MetaClass = null;
Expand All @@ -53,7 +52,6 @@ public partial class FileMetaClass : FileMetaBase

private List<FileMetaMemberVariable> m_MemberVariableList = new List<FileMetaMemberVariable>();
private List<FileMetaMemberFunction> m_MemberFunctionList = new List<FileMetaMemberFunction>();
private List<FileMetaMemberData> m_MemberDataList = new List<FileMetaMemberData>();

private NamespaceStatementBlock m_NamespaceBlock = null;
private List<Node> m_NodeList = new List<Node>();
Expand Down Expand Up @@ -211,11 +209,11 @@ private bool Parse()
isError = true;
Console.WriteLine("Error 解析过了一次Enum!!");
}
if( m_DataToken != null )
{
isError = true;
Console.WriteLine("Error 解析过了一次data!!");
}
//if( m_DataToken != null )
//{
// isError = true;
// Console.WriteLine("Error 解析过了一次data!!");
//}
if (m_ClassToken != null)
{
isError = true;
Expand All @@ -231,37 +229,37 @@ private bool Parse()
isError = true;
Console.WriteLine("Error 解析过了一次Enum!!");
}
if (m_DataToken != null)
{
isError = true;
Console.WriteLine("Error 解析过了一次data!!");
}
//if (m_DataToken != null)
//{
// isError = true;
// Console.WriteLine("Error 解析过了一次data!!");
//}
if (m_ClassToken != null)
{
isError = true;
Console.WriteLine("Error 解析过了一次Class!!");
}
m_EnumToken = token;
}
else if (token.type == ETokenType.Data)
{
if(m_EnumToken != null)
{
isError = true;
Console.WriteLine("Error 解析过了一次Enum!!");
}
if (m_DataToken != null)
{
isError = true;
Console.WriteLine("Error 解析过了一次data!!");
}
if (m_ClassToken != null)
{
isError = true;
Console.WriteLine("Error 解析过了一次Class!!");
}
m_DataToken = token;
}
//else if (token.type == ETokenType.Data)
//{
// if(m_EnumToken != null)
// {
// isError = true;
// Console.WriteLine("Error 解析过了一次Enum!!");
// }
// //if (m_DataToken != null)
// //{
// // isError = true;
// // Console.WriteLine("Error 解析过了一次data!!");
// //}
// if (m_ClassToken != null)
// {
// isError = true;
// Console.WriteLine("Error 解析过了一次Class!!");
// }
// //m_DataToken = token;
//}
else if (token.type == ETokenType.ColonDouble)
{
if (colonDoubleToken != null)
Expand Down Expand Up @@ -314,25 +312,25 @@ private bool Parse()
}

}
else if (m_DataToken != null)
{
if (interfaceToken != null || interfaceNameTokenList.Count > 0)
{
Console.WriteLine("Error Data方式,不支持接口方式");
return false;
}
if (permissionToken != null)
{
Console.WriteLine("Error Data方式,不支持权限的使用!!");
return false;
}
if (m_PartialToken != null)
{
Console.WriteLine("Error Data方式,不支持partial的使用!!");
return false;
}

}
//else if (m_DataToken != null)
//{
// if (interfaceToken != null || interfaceNameTokenList.Count > 0)
// {
// Console.WriteLine("Error Data方式,不支持接口方式");
// return false;
// }
// if (permissionToken != null)
// {
// Console.WriteLine("Error Data方式,不支持权限的使用!!");
// return false;
// }
// if (m_PartialToken != null)
// {
// Console.WriteLine("Error Data方式,不支持partial的使用!!");
// return false;
// }

//}
else
{
if (interfaceNameTokenList.Count > 0)
Expand Down Expand Up @@ -370,15 +368,6 @@ public MetaNamespace GetLasatMetaNamespace()
}
return null;
}
public void AddFileMemberData( FileMetaMemberData fmmd )
{
m_MemberDataList.Add(fmmd);
fmmd.SetFileMeta(m_FileMeta);
}
public FileMetaMemberData GetFileMemberData( string name )
{
return m_MemberDataList.Find(a => a.name == name);
}
public void AddFileMemberVariable(FileMetaMemberVariable fmv )
{
m_MemberVariableList.Add(fmv);
Expand Down Expand Up @@ -487,11 +476,7 @@ public override void SetDeep(int _deep)
foreach (var v in m_MemberVariableList)
{
v.SetDeep(m_Deep + 1);
}
foreach (var v in m_MemberDataList)
{
v.SetDeep(m_Deep + 1);
}
}
foreach (var v in m_MemberFunctionList)
{
v.SetDeep(m_Deep + 1);
Expand All @@ -503,31 +488,32 @@ public override string ToFormatString()
for (int i = 0; i < deep; i++)
stringBuilder.Append(Global.tabChar);

if( m_DataToken != null )
{
if (m_ConstToken != null)
{
stringBuilder.Append(m_ConstToken.lexeme.ToString() + " ");
}
stringBuilder.Append(m_DataToken.lexeme.ToString() + " ");
stringBuilder.Append(name);

stringBuilder.Append(Environment.NewLine);
for (int i = 0; i < deep; i++)
stringBuilder.Append(Global.tabChar);
stringBuilder.Append("{" + Environment.NewLine);


foreach (var v in m_MemberDataList)
{
stringBuilder.Append(v.ToFormatString() + Environment.NewLine);
}

for (int i = 0; i < deep; i++)
stringBuilder.Append(Global.tabChar);
stringBuilder.Append("}");
}
else if( m_EnumToken != null )
//if( m_DataToken != null )
//{
// if (m_ConstToken != null)
// {
// stringBuilder.Append(m_ConstToken.lexeme.ToString() + " ");
// }
// stringBuilder.Append(m_DataToken.lexeme.ToString() + " ");
// stringBuilder.Append(name);

// stringBuilder.Append(Environment.NewLine);
// for (int i = 0; i < deep; i++)
// stringBuilder.Append(Global.tabChar);
// stringBuilder.Append("{" + Environment.NewLine);


// foreach (var v in m_MemberDataList)
// {
// stringBuilder.Append(v.ToFormatString() + Environment.NewLine);
// }

// for (int i = 0; i < deep; i++)
// stringBuilder.Append(Global.tabChar);
// stringBuilder.Append("}");
//}
//else
if( m_EnumToken != null )
{
if( m_ConstToken != null )
{
Expand Down
Loading

0 comments on commit 712df0f

Please sign in to comment.