Coder Social home page Coder Social logo

ltframe / menthol Goto Github PK

View Code? Open in Web Editor NEW
126.0 6.0 10.0 47.2 MB

Menthol is a very flexible,simple script language,it like javascript or lua,written by C++

Home Page: http://www.ltplayer.com

C++ 19.85% C 76.68% Yacc 0.17% Lex 0.04% Roff 0.27% Makefile 0.66% M4 1.82% XSLT 0.45% CMake 0.05% JavaScript 0.01%

menthol's Introduction

Englist | 简体中文

重要提示:因无法上传超100M文件,如果您要Debug编译,请解压MCryptography文件夹下的cryptlibD.7z至当前目录

Menthol

Menthol是一个简单、易用、易学的脚本语言,语法简单,开发简便,使用C/C++可以快速为它开发扩展.关于更多信息请访问官方网站:www.ltplayer.com

特性

  • 无类型
  • 自动内存管理
  • 面向函数编程
  • 方便的函数封装
  • 简便的方法扩展

教程说明

关键字
if else for break true false const
try except throw continue return while
null import _mmain def var in typeof module use mmrt
操作符
- * / () ; , | &  ? [] ! % ^ : :: .. = < > != <> || &&  >= <= == += -= /= *= %= &= |= ^= << >> **
基本概念

menthol是一个函数式语言,但它是基于模块操作的语言,在menthol,除了启动函数_mmain,其他用户定义的全局变量、函数都必须基于模块而定义.

导入包

包就是一个用menthol语言或者C/C++写成的模块集合,扩展名为.med,如果要使用包中的模块,需要用import关键字导入

Import console;

console是系统自带的输入输出包,里面包含了控制输入输出的模块,导入时不需要区分文件大小写.

使用模块

导入包以后,就可以使用包内的模块了,使用前需要用use关键字来使用,注意,模块名是去区分大小写的,在一个use后面可以引入多个模块名,用逗号隔开

Import console;
use Console;

如果要导入文件夹中的包,可以用'.'来代替文件路径中的'/',如要导入iup的IupControlsStandard,使用button,可以使用

Import iup.controlsstandard;
use IupControlsStandard;

如果使用的模块在同一包内,并且在使用前已经定义,则不要用use在引入

基本操作

所有的menthol都由系统自动执行_mmain开始,声明变量使用关键字var,全部变量要在变量名前加@,局部变量要在变量名前加$,不可以修改的变量前面要用const修饰

module test
{
	var @global;// 全局变量
	var const @global2;// const 全局变量
}
_mmain:$a,$c
{    
	var $v = 0; //局部变量
	var cosnt $v2 = 0; //const 局部变量
}
错误处理
Import console;
use Console;
module test
{
	def test:
	{	    
	    throw "msg1","msg2";
	}
}

_mmain:$a,$c
{    
	var $m = mmrt(Console);
	try{
		mmrt(test).test();
	}
	except:$a,$b
	{
		$m.Out($a);
		$m.Out($b);
	}
}
数组
Import console;
use Console;
_mmain:$a,$c
{    
	var $m = mmrt(Console);
	var $arr = [1,2,3,4,5,6];
	$m.Out($arr[1]);
	$m.Out($arr[1..][3]);
	$m.Out($arr[..3][4]);
	$m.Out($arr[2..5][5]);
	$arr = "abcdefghi";
	$m.Out($arr[1]);
}
字典
Import console;
use Console;
_mmain:$a,$c
{    
	var $m = mmrt(Console);
    var $arr = [1,2,3,4,6,7];
	for(var $i in $arr)
	{
		$m.Out($i);
	}
	$arr ="abcdefghi";
	
	for(var $i in $arr)
	{
		$m.Out($i);
	}
	$arr =(key1::"value1",key2::"value2");
	for(var $key,$value in $arr)
	{
		$m.Out($key+":"+$value);
	}
}
函数
Import console;
use Console;
module test
{
	var @m = mmrt(Console);
	def func:$i1,$i2=333
	{	
		@m.Out($i1);
		@m.Out($i2);
	}
}
_mmain:$a,$c
{	
	var $t = mmrt(test);
	$t.func(222,1000,333);
	$t.func(555);
}
多线程
import console;
import Thread;
use Console,Thread;

module test
{
	var @m = mmrt(Console);
	def thread2:
	{
		while(true){
			@m.Out("thread2");
		}
	}

	def thread1:
	{
		while(true){
			@m.Out("thread1");
		}
	}
}
_mmain:$a,$c
{	
	var $t = mmrt(Thread),$e = mmrt(test);
	var $k1 = $t.NewThread($e.thread1);
	$t.Join($k1);
	var $k2 = $t.NewThread($e.thread2);	
	$t.Join($k2);
}
Gui

Menthol使用iup作为实现界面的类库

开发外部扩展库(c/c++)

example1.dll

#include "Menthol.h"
StackState test(VmState* vmstate)
{
    StackState value =GetParam(1,vmstate);
	StackState st;
	st.v = M_STRING;
	st = String_CreateString("this is a test string",vmstate);
	return st;
}

UserFunctionAtter example1list[] = {
	{ "test", test, 0 },
	{NULL,NULL,0}
};

MentholPackMethod void example1_Init(VmState* vmstate)
{
    RunTimeState* prt = CreateModuleRunTime("example1",vmstate);
	RegisterModuleFunciton(prt, example1list);
}

关于更多的menthol的相关文档,请浏览menthol文档

menthol's People

Contributors

ltframe avatar

Stargazers

WerewolfwolfyXD avatar Rainy avatar  avatar SakuraEntropia avatar Qiu Monster avatar twoone3 avatar dsfsdf avatar  avatar  avatar xiaolou86 avatar Gian avatar  avatar Hecate2 avatar  avatar KevinZhang avatar  avatar  avatar  avatar  avatar Danny avatar  avatar treexi avatar  avatar harry Xu avatar  avatar Red Panda avatar  avatar Ryan avatar  avatar Tianhao Fu avatar  avatar XSFIRE avatar mr zhang avatar  avatar  avatar hxy avatar Siyun Tsan (Shawn) avatar  avatar GaoJiuFeng avatar CubeMode avatar anye avatar  avatar  avatar  avatar whitepure avatar xort avatar xiaobin avatar book avatar  avatar  avatar Liurx avatar 伊 avatar  avatar 蓦然 avatar  avatar lovedeathrobot avatar xuyisu avatar microgogo avatar  avatar Martin Xia avatar Jianbing Fang avatar bhhbazinga avatar lacewing.cc avatar Benedict Jin avatar Umbrella avatar fanshanhong avatar Dong Bin avatar helen avatar  avatar Stephennnnn0315 avatar  avatar  avatar Rain avatar pengjiaojiao avatar JiangBei avatar  avatar ZhangMingzhe avatar  avatar 沈文杰 avatar Coder-TanJX avatar  avatar  avatar ShiLin avatar ZhenYouLi avatar xlvchao avatar cxj0xiaojinzi@gmail.com avatar maven avatar aeasringnar avatar 友谊魔兽社区 avatar ingangi avatar  avatar 马瑞博 avatar Joya Chen avatar chali avatar 杨培星 avatar TZW avatar Eric Jin avatar  avatar  avatar augustVino avatar

Watchers

James Cloos avatar  avatar xuyisu avatar  avatar feifei avatar 罗家二菇凉 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.