成功测试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])) &&
|
is_number(module.s_cursor.source[module.s_cursor.guard])) &&
|
||||||
!at_eof()) {
|
!at_eof()) {
|
||||||
guard_advance();
|
guard_advance();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return gen_word();
|
return gen_word();
|
||||||
}
|
}
|
||||||
|
|
||||||
inline token_type_t special_char() {
|
inline token_type_t special_char() {
|
||||||
char c = guard_advance();
|
char c = module.s_cursor.source[module.s_cursor.guard];
|
||||||
|
guard_advance();
|
||||||
switch (c) {
|
switch (c) {
|
||||||
case '(':
|
case '(':
|
||||||
return TOKEN_LEFT_PAREN;
|
return TOKEN_LEFT_PAREN;
|
||||||
@ -637,7 +639,6 @@ private:
|
|||||||
inline token_t item() {
|
inline token_t item() {
|
||||||
module.s_cursor.length = 0; // 重置长度
|
module.s_cursor.length = 0; // 重置长度
|
||||||
module.s_cursor.current = module.s_cursor.guard; // 重置游标位置
|
module.s_cursor.current = module.s_cursor.guard; // 重置游标位置
|
||||||
|
|
||||||
if (is_alpha(module.s_cursor.source[module.s_cursor.guard])) {
|
if (is_alpha(module.s_cursor.source[module.s_cursor.guard])) {
|
||||||
std::string word = ident_advance();
|
std::string word = ident_advance();
|
||||||
return token_t(scanner_ident(word, word.size()),word, module.s_cursor.line, module.s_cursor.column);
|
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();
|
word = bin_number_advance();
|
||||||
decimal = number_convert(word, 2);
|
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 {
|
} else {
|
||||||
word = number_advance();
|
word = number_advance();
|
||||||
decimal = number_convert(word, 10);
|
decimal = number_convert(word, 10);
|
||||||
|
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;
|
using std::string,std::vector;
|
||||||
|
|
||||||
TEST_CASE("Scanner test") {
|
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 scanner(module);
|
||||||
|
|
||||||
scanner.scan();
|
scanner.scan();
|
||||||
|
Loading…
Reference in New Issue
Block a user