Skip to content

Commit

Permalink
升级版本到 v1.0.9
Browse files Browse the repository at this point in the history
  • Loading branch information
linyuan.yang committed Mar 15, 2019
1 parent e8874f6 commit 21c2be3
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 25 deletions.
5 changes: 5 additions & 0 deletions ReleaseNotes.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
### v1.0.9
*2019-03-15*

* 支持 **`** 符号申请字符串, 用法同 单引号 双引号一致, 支持@符号

### v1.0.8
*2019-03-14*

Expand Down
27 changes: 18 additions & 9 deletions Scorpio/src/Compiler/ScriptLexer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -228,26 +228,26 @@ void ReadNumberOrHexNumber() {
}
/// <summary> 读取 } </summary>
void ReadRightBrace() {
if (m_FormatString == 0) {
if (m_FormatString == FormatString.None) {
AddToken(TokenType.RightBrace, '}');
} else {
AddToken(TokenType.RightPar, ')');
AddToken(TokenType.Plus, '+');
if (m_FormatString == 1 || m_FormatString == 2) {
m_ch = m_FormatString == 1 ? '\'' : '\"';
m_FormatString = 0;
if (m_FormatString == FormatString.SingleQuotes || m_FormatString == FormatString.DoubleQuotes || m_FormatString == FormatString.Point) {
m_ch = m_FormatString == FormatString.SingleQuotes ? '\'' : (m_FormatString == FormatString.DoubleQuotes ? '\"' : '`');
m_FormatString = FormatString.None;
ReadString();
} else {
m_ch = m_FormatString == 3 ? '\'' : '\"';
m_FormatString = 0;
m_ch = m_FormatString == FormatString.SimpleSingleQuotes ? '\'' : (m_FormatString == FormatString.SimpleDoubleQuotes ? '\"' : '`');
m_FormatString = FormatString.None;
ReadSimpleString(false);
}
}
}
void ReadSimpleString(bool symbol) {
if (symbol) {
m_ch = ReadChar();
if (m_ch != '\'' && m_ch != '\"') {
if (m_ch != '\'' && m_ch != '\"' && m_ch != '`') {
ThrowInvalidCharacterException();
}
}
Expand All @@ -269,7 +269,11 @@ void ReadSimpleString(bool symbol) {
AddToken(TokenType.String, m_Builder.ToString());
AddToken(TokenType.Plus, '+');
AddToken(TokenType.LeftPar, '(');
m_FormatString = m_ch == '\'' ? 3 : 4;
if (m_ch == '\'') {
m_FormatString = FormatString.SimpleSingleQuotes;
} else {
m_FormatString = m_ch == '\"' ? FormatString.SimpleDoubleQuotes : FormatString.SimplePoint;
}
break;
} else {
UndoChar();
Expand Down Expand Up @@ -314,7 +318,11 @@ void ReadString() {
AddToken(TokenType.String, m_Builder.ToString());
AddToken(TokenType.Plus, '+');
AddToken(TokenType.LeftPar, '(');
m_FormatString = m_ch == '\'' ? 1 : 2;
if (m_ch == '\'') {
m_FormatString = FormatString.SingleQuotes;
} else {
m_FormatString = m_ch == '\"' ? FormatString.DoubleQuotes : FormatString.Point;
}
break;
} else {
UndoChar();
Expand Down Expand Up @@ -531,6 +539,7 @@ public List<Token> GetTokens() {
break;
case '\"':
case '\'':
case '`':
ReadString();
break;
case '0':
Expand Down
13 changes: 12 additions & 1 deletion Scorpio/src/Compiler/ScriptLexerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@
using Scorpio.Exception;
namespace Scorpio.Compiler {
public partial class ScriptLexer {
enum FormatString {
None, //无
SingleQuotes, //单引号字符串
DoubleQuotes, //双引号字符串
Point, //`符号字符串

SimpleSingleQuotes, //带 @ 单引号字符串
SimpleDoubleQuotes, //带 @ 双引号字符串
SimplePoint, //带 @ `符号字符串
}
private const char END_CHAR = (char)0; //结尾字符
private const int BREVIARY_CHAR = 10; //摘要的字符数
private char m_ch; //当前解析字符
private char ch; //临时保存字符
private int m_FormatString; //是否正在格式化字符串 0 没有 1普通字符串单引号 2普通字符串双引号 3单纯字符串单引号 4单传字符串双引号
private FormatString m_FormatString; //是否正在格式化字符串
private StringBuilder m_Builder; //当前缓存的字符串
private List<Token> m_listTokens; //返回的Token列表
private String m_strBreviary; //字符串的摘要 取第一行字符串的前20个字符
Expand All @@ -24,6 +34,7 @@ public ScriptLexer(String buffer, String strBreviary) {
} else {
m_strBreviary = strBreviary;
}
m_FormatString = FormatString.None;
m_strBuffer = buffer;
m_iLength = buffer.Length;
m_Builder = new StringBuilder();
Expand Down
4 changes: 2 additions & 2 deletions Scorpio/src/Version.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace Scorpio {
public static class Version {
public const string version = "1.0.8";
public const string date = "2019-03-14";
public const string version = "1.0.9";
public const string date = "2019-03-15";
}
}
27 changes: 18 additions & 9 deletions ScorpioTest/Assets/Scorpio/Compiler/ScriptLexer.cs
Original file line number Diff line number Diff line change
Expand Up @@ -228,26 +228,26 @@ void ReadNumberOrHexNumber() {
}
/// <summary> 读取 } </summary>
void ReadRightBrace() {
if (m_FormatString == 0) {
if (m_FormatString == FormatString.None) {
AddToken(TokenType.RightBrace, '}');
} else {
AddToken(TokenType.RightPar, ')');
AddToken(TokenType.Plus, '+');
if (m_FormatString == 1 || m_FormatString == 2) {
m_ch = m_FormatString == 1 ? '\'' : '\"';
m_FormatString = 0;
if (m_FormatString == FormatString.SingleQuotes || m_FormatString == FormatString.DoubleQuotes || m_FormatString == FormatString.Point) {
m_ch = m_FormatString == FormatString.SingleQuotes ? '\'' : (m_FormatString == FormatString.DoubleQuotes ? '\"' : '`');
m_FormatString = FormatString.None;
ReadString();
} else {
m_ch = m_FormatString == 3 ? '\'' : '\"';
m_FormatString = 0;
m_ch = m_FormatString == FormatString.SimpleSingleQuotes ? '\'' : (m_FormatString == FormatString.SimpleDoubleQuotes ? '\"' : '`');
m_FormatString = FormatString.None;
ReadSimpleString(false);
}
}
}
void ReadSimpleString(bool symbol) {
if (symbol) {
m_ch = ReadChar();
if (m_ch != '\'' && m_ch != '\"') {
if (m_ch != '\'' && m_ch != '\"' && m_ch != '`') {
ThrowInvalidCharacterException();
}
}
Expand All @@ -269,7 +269,11 @@ void ReadSimpleString(bool symbol) {
AddToken(TokenType.String, m_Builder.ToString());
AddToken(TokenType.Plus, '+');
AddToken(TokenType.LeftPar, '(');
m_FormatString = m_ch == '\'' ? 3 : 4;
if (m_ch == '\'') {
m_FormatString = FormatString.SimpleSingleQuotes;
} else {
m_FormatString = m_ch == '\"' ? FormatString.SimpleDoubleQuotes : FormatString.SimplePoint;
}
break;
} else {
UndoChar();
Expand Down Expand Up @@ -314,7 +318,11 @@ void ReadString() {
AddToken(TokenType.String, m_Builder.ToString());
AddToken(TokenType.Plus, '+');
AddToken(TokenType.LeftPar, '(');
m_FormatString = m_ch == '\'' ? 1 : 2;
if (m_ch == '\'') {
m_FormatString = FormatString.SingleQuotes;
} else {
m_FormatString = m_ch == '\"' ? FormatString.DoubleQuotes : FormatString.Point;
}
break;
} else {
UndoChar();
Expand Down Expand Up @@ -531,6 +539,7 @@ public List<Token> GetTokens() {
break;
case '\"':
case '\'':
case '`':
ReadString();
break;
case '0':
Expand Down
13 changes: 12 additions & 1 deletion ScorpioTest/Assets/Scorpio/Compiler/ScriptLexerBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,21 @@
using Scorpio.Exception;
namespace Scorpio.Compiler {
public partial class ScriptLexer {
enum FormatString {
None, //无
SingleQuotes, //单引号字符串
DoubleQuotes, //双引号字符串
Point, //`符号字符串

SimpleSingleQuotes, //带 @ 单引号字符串
SimpleDoubleQuotes, //带 @ 双引号字符串
SimplePoint, //带 @ `符号字符串
}
private const char END_CHAR = (char)0; //结尾字符
private const int BREVIARY_CHAR = 10; //摘要的字符数
private char m_ch; //当前解析字符
private char ch; //临时保存字符
private int m_FormatString; //是否正在格式化字符串 0 没有 1普通字符串单引号 2普通字符串双引号 3单纯字符串单引号 4单传字符串双引号
private FormatString m_FormatString; //是否正在格式化字符串
private StringBuilder m_Builder; //当前缓存的字符串
private List<Token> m_listTokens; //返回的Token列表
private String m_strBreviary; //字符串的摘要 取第一行字符串的前20个字符
Expand All @@ -24,6 +34,7 @@ public ScriptLexer(String buffer, String strBreviary) {
} else {
m_strBreviary = strBreviary;
}
m_FormatString = FormatString.None;
m_strBuffer = buffer;
m_iLength = buffer.Length;
m_Builder = new StringBuilder();
Expand Down
4 changes: 2 additions & 2 deletions ScorpioTest/Assets/Scorpio/Version.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
namespace Scorpio {
public static class Version {
public const string version = "1.0.8";
public const string date = "2019-03-14";
public const string version = "1.0.9";
public const string date = "2019-03-15";
}
}
2 changes: 1 addition & 1 deletion Tools/build.ps1
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
$version="1.0.8"
$version="1.0.9"



Expand Down

0 comments on commit 21c2be3

Please sign in to comment.