Cpy provides you a way to write Python codes in C syntax!
Branch: master
Clone or download
ideawu
ideawu up to date
Latest commit f014d1a Dec 26, 2014
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
antlr3 init repo May 12, 2013
samples init repo May 12, 2013
.gitignore udpate Oct 11, 2014
Eval.g init repo May 12, 2013
Eval.py up to date Dec 26, 2014
Eval.tokens init repo May 12, 2013
Expr.g up to date Dec 26, 2014
Expr.tokens init repo May 12, 2013
ExprLexer.py init repo May 12, 2013
ExprParser.py init repo May 12, 2013
Makefile init repo May 12, 2013
README.md update README.md Oct 21, 2014
Readme.txt init repo May 12, 2013
cpy init repo May 12, 2013
cpy.bat init repo May 12, 2013
cpy.py up to date Dec 26, 2014
engine.py up to date Dec 26, 2014
test.cpy init repo May 12, 2013

README.md

Cpy - A C-like scripting language

Cpy is the real general purposed dynamic c-like syntax scripting language. Cpy provides you a way to write Python codes in C syntax!

Hello World!

// file: hello.cpy
printf("Hello World!\n");

$ cpy hello
Hello World!
$

Reading from stdin

// file: stdin.cpy
print "input 'q' to quit:";

while(true){
	printf("> ");
	line = stdin.readline();
	line = line.strip().lower();
	if(line == 'q'){
		print "bye.";
		break;
	}else{
		print 'your input:', repr(line);
	}
}

classes and functions

class A{
	public a = 0;
	public static s = 1;
	
	function init(a){
		this.a = a;
		print 'A init', a;
	}

	function f(a, b=1){
		return a + b;
	}
}

print A.s; // 1
a = new A(1); // A init 1
print a.f(1, 2); // 3

Reusing Python codes

import time; // Python's built-in time module
time.sleep(1);

C-like vs Pythonic

Whitespace indentation to delimit block is bad

Python’s syntax is said to be clear and elegant. It is good for small piece of codes, but not good for more than 100 lines of codes. I usually mis-understand the number of indents when first glance at a more than 10 lines block of codes after an if.

And TAB vs SPACE is particularly annoying!

The curly braces are quit clear and elegant, most people feel comfortable at curly braces.

i++

i++ is very usefull.

"this" is that!

Python requires you to put an unnecessary “self” as the first argument of a function definition in a class, but to omit it when invoking that function. What’s the meaning of that? It’s total garbage.

Confusing expression of calling function in parent class

Couldn’t it be as simple as “parent.f()”? Why multi-inheritance?

Useless lambda expression

The lambda body can only be a single expression – useless! Ah-ha, now you are regret for discriminating curly braces, aren’t you? Look at the really ELEGANT syntax of JavaScript’s anonymous function.

Unwelcomed None/True/False

Just let those be: null, true, false. “i is None” is no more elegant than “i == null”.

Implicit static variable(Non-primative default argument)

Non-primative default arguments in function definitions are implicitly static, that cause many hidden bugs by mistake.

Cpy – The comfortable way to write Python codes in C syntax

Cpy is a C-like scripting language. Cpy codes are converted into python code first, then run by Python at the same time.

Relax and enjoy!