成功测试identifier和Punctutation , 增加界符;
This commit is contained in:
parent
0a3bfc4a08
commit
3ea3dfde27
52
include/input.txt
Normal file
52
include/input.txt
Normal file
@ -0,0 +1,52 @@
|
||||
//Merge Sort
|
||||
|
||||
struct Point {
|
||||
x:i8;
|
||||
y:i8;
|
||||
}
|
||||
// Struct
|
||||
|
||||
/*
|
||||
ababa
|
||||
*/
|
||||
[Point:105] tmp;
|
||||
|
||||
fn MergeSort([Point:20] v,i8 l,i8 r) -> {
|
||||
if l>r {
|
||||
return ;
|
||||
}
|
||||
var mid = l + r >>1;
|
||||
MergeSort(v,l,mid);
|
||||
MergeSort(v,mid+1,r);
|
||||
i8 i=l,j=mid+1,k=l;
|
||||
for ;i <= mid && j <= r;k+=1 {
|
||||
if v[l] < v[r]
|
||||
{
|
||||
tmp[k] = v[l];
|
||||
l +=1;
|
||||
}
|
||||
else{
|
||||
tmp[k] = v[r];
|
||||
r += 1;
|
||||
}
|
||||
}
|
||||
for ; i<=mid; {
|
||||
tmp[k] = tmp[i];
|
||||
k += 1,i+=1;
|
||||
}
|
||||
for ; j <=r ; {
|
||||
tmp[k] = tmp[j];
|
||||
k +=1 , j += 1;
|
||||
}
|
||||
|
||||
}
|
||||
fn main()->i8{
|
||||
[Point:20] d;
|
||||
[Point] d;
|
||||
|
||||
for i8 i = 0;i< 20; i++ {
|
||||
d[i] = {x:i * i,y:i};
|
||||
}
|
||||
MergeSort(d,d+20);
|
||||
0
|
||||
}
|
@ -140,13 +140,15 @@ private:
|
||||
is_number(module.s_cursor.source[module.s_cursor.guard])) &&
|
||||
!at_eof()) {
|
||||
guard_advance();
|
||||
|
||||
}
|
||||
|
||||
return gen_word();
|
||||
}
|
||||
|
||||
inline token_type_t special_char() {
|
||||
char c = guard_advance();
|
||||
char c = module.s_cursor.source[module.s_cursor.guard];
|
||||
guard_advance();
|
||||
switch (c) {
|
||||
case '(':
|
||||
return TOKEN_LEFT_PAREN;
|
||||
@ -637,7 +639,6 @@ private:
|
||||
inline token_t item() {
|
||||
module.s_cursor.length = 0; // 重置长度
|
||||
module.s_cursor.current = module.s_cursor.guard; // 重置游标位置
|
||||
|
||||
if (is_alpha(module.s_cursor.source[module.s_cursor.guard])) {
|
||||
std::string word = ident_advance();
|
||||
return token_t(scanner_ident(word, word.size()),word, module.s_cursor.line, module.s_cursor.column);
|
||||
@ -662,6 +663,11 @@ private:
|
||||
word = bin_number_advance();
|
||||
decimal = number_convert(word, 2);
|
||||
}
|
||||
else {
|
||||
word = number_advance();
|
||||
if (word.size() > 1) word = word.substr(1, word.size() - 1);
|
||||
decimal = number_convert(word,10);
|
||||
}
|
||||
} else {
|
||||
word = number_advance();
|
||||
decimal = number_convert(word, 10);
|
||||
@ -680,7 +686,7 @@ private:
|
||||
return token_t(TOKEN_LITERAL_STRING, word, module.s_cursor.line, module.s_cursor.column);
|
||||
}
|
||||
|
||||
token_type_t type = special_char();
|
||||
token_type_t type = special_char();
|
||||
|
||||
return token_t(type, gen_word(), module.s_cursor.line, module.s_cursor.column);
|
||||
}
|
||||
|
52
input.txt
Normal file
52
input.txt
Normal file
@ -0,0 +1,52 @@
|
||||
//Merge Sort
|
||||
|
||||
struct Point {
|
||||
x:i8;
|
||||
y:i8;
|
||||
}
|
||||
// Struct
|
||||
|
||||
/*
|
||||
ababa
|
||||
*/
|
||||
[Point:105] tmp;
|
||||
|
||||
fn MergeSort([Point:20] v,i8 l,i8 r) -> {
|
||||
if l>r {
|
||||
return ;
|
||||
}
|
||||
var mid = l + r >>1;
|
||||
MergeSort(v,l,mid);
|
||||
MergeSort(v,mid+1,r);
|
||||
i8 i=l,j=mid+1,k=l;
|
||||
for ;i <= mid && j <= r;k+=1 {
|
||||
if v[l] < v[r]
|
||||
{
|
||||
tmp[k] = v[l];
|
||||
l +=1;
|
||||
}
|
||||
else{
|
||||
tmp[k] = v[r];
|
||||
r += 1;
|
||||
}
|
||||
}
|
||||
for ; i<=mid; {
|
||||
tmp[k] = tmp[i];
|
||||
k += 1,i+=1;
|
||||
}
|
||||
for ; j <=r ; {
|
||||
tmp[k] = tmp[j];
|
||||
k +=1 , j += 1;
|
||||
}
|
||||
|
||||
}
|
||||
fn main()->i8{
|
||||
[Point:20] d;
|
||||
[Point] d;
|
||||
|
||||
for i8 i = 0;i< 20; i++ {
|
||||
d[i] = {x:i * i,y:i};
|
||||
}
|
||||
MergeSort(d,d+20);
|
||||
0
|
||||
}
|
52
src/input.txt
Normal file
52
src/input.txt
Normal file
@ -0,0 +1,52 @@
|
||||
//Merge Sort
|
||||
|
||||
struct Point {
|
||||
x:i8;
|
||||
y:i8;
|
||||
}
|
||||
// Struct
|
||||
|
||||
/*
|
||||
ababa
|
||||
*/
|
||||
[Point:105] tmp;
|
||||
|
||||
fn MergeSort([Point:20] v,i8 l,i8 r) -> {
|
||||
if l>r {
|
||||
return ;
|
||||
}
|
||||
var mid = l + r >>1;
|
||||
MergeSort(v,l,mid);
|
||||
MergeSort(v,mid+1,r);
|
||||
i8 i=l,j=mid+1,k=l;
|
||||
for ;i <= mid && j <= r;k+=1 {
|
||||
if v[l] < v[r]
|
||||
{
|
||||
tmp[k] = v[l];
|
||||
l +=1;
|
||||
}
|
||||
else{
|
||||
tmp[k] = v[r];
|
||||
r += 1;
|
||||
}
|
||||
}
|
||||
for ; i<=mid; {
|
||||
tmp[k] = tmp[i];
|
||||
k += 1,i+=1;
|
||||
}
|
||||
for ; j <=r ; {
|
||||
tmp[k] = tmp[j];
|
||||
k +=1 , j += 1;
|
||||
}
|
||||
|
||||
}
|
||||
fn main()->i8{
|
||||
[Point:20] d;
|
||||
[Point] d;
|
||||
|
||||
for i8 i = 0;i< 20; i++ {
|
||||
d[i] = {x:i * i,y:i};
|
||||
}
|
||||
MergeSort(d,d+20);
|
||||
0
|
||||
}
|
52
unit/input.txt
Normal file
52
unit/input.txt
Normal file
@ -0,0 +1,52 @@
|
||||
//Merge Sort
|
||||
|
||||
struct Point {
|
||||
x:i8;
|
||||
y:i8;
|
||||
}
|
||||
// Struct
|
||||
|
||||
/*
|
||||
ababa
|
||||
*/
|
||||
[Point:105] tmp;
|
||||
|
||||
fn MergeSort([Point:20] v,i8 l,i8 r) -> {
|
||||
if l>r {
|
||||
return ;
|
||||
}
|
||||
var mid = l + r >>1;
|
||||
MergeSort(v,l,mid);
|
||||
MergeSort(v,mid+1,r);
|
||||
i8 i=l,j=mid+1,k=l;
|
||||
for ;i <= mid && j <= r;k+=1 {
|
||||
if v[l] < v[r]
|
||||
{
|
||||
tmp[k] = v[l];
|
||||
l +=1;
|
||||
}
|
||||
else{
|
||||
tmp[k] = v[r];
|
||||
r += 1;
|
||||
}
|
||||
}
|
||||
for ; i<=mid; {
|
||||
tmp[k] = tmp[i];
|
||||
k += 1,i+=1;
|
||||
}
|
||||
for ; j <=r ; {
|
||||
tmp[k] = tmp[j];
|
||||
k +=1 , j += 1;
|
||||
}
|
||||
|
||||
}
|
||||
fn main()->i8{
|
||||
[Point:20] d;
|
||||
[Point] d;
|
||||
|
||||
for i8 i = 0;i< 20; i++ {
|
||||
d[i] = {x:i * i,y:i};
|
||||
}
|
||||
MergeSort(d,d+20);
|
||||
0
|
||||
}
|
@ -8,7 +8,11 @@
|
||||
using std::string,std::vector;
|
||||
|
||||
TEST_CASE("Scanner test") {
|
||||
module_t module("{}");
|
||||
std::ifstream t("input.txt");
|
||||
std::stringstream buffer;
|
||||
buffer<<t.rdbuf();
|
||||
std::cout<<buffer.str();
|
||||
module_t module(buffer.str());
|
||||
Scanner scanner(module);
|
||||
|
||||
scanner.scan();
|
||||
|
Loading…
Reference in New Issue
Block a user