Git Product home page Git Product logo

ezhil-language-foundation / ezhil-lang Goto Github PK

View Code? Open in Web Editor NEW
170.0 37.0 46.0 9.12 MB

எழில் - ஒரு தமிழ் நிரலாக்க மொழி; தமிழ் மாணவர்களுக்கு இது முதல்முறை கணிப்பொறி நிரல் ஏழுத உதவும் (Ezhil, is a fun Tamil programming language for K-12).

Home Page: http://ezhillang.org/

License: GNU General Public License v3.0

JavaScript 3.05% Emacs Lisp 0.31% PHP 0.37% Python 32.43% Shell 1.30% HTML 16.23% CSS 1.19% Makefile 0.01% Nemerle 0.54% Batchfile 0.02% Roff 44.47% Dockerfile 0.08%
programming-language python ezhil-language tamil

ezhil-lang's Introduction

Ezhil-Lang Build Status

Introduction

எழில்: தமிழ் நிரலாக்க மொழி; முதன்முறை கணிப்பொறி நிரல் எழுதுகிற 
தமிழ் மாணவர்களுக்கு இது உதவும்.

எழில் மொழி  குழந்தைகளும்  , பள்ளி மாணவர்களும்  கட்ட்ருகொள்ளும் வகையில் உருவாக்கப்பட்ட ஒரு கணினி நிரல் மொழி.
எழில் ஒரு செயல்முறை நோக்கு - (Imperative ) கணினி மொழி. இதை ரூபி , பைதான் போன்ற மொழிகளின் நடையில் அமைக்கபட்டது.
எழில் மொழியில் நிபந்தனை கட்டளைகள், மடக்கு கட்டளைகள் என்றும்  எழுதலாம்; இதில் செயல்பாடுகள், செயல்குருகள் என்று கணினி நிரல்களை 
பிரிக்கலாம். எழில்  மென்பொருள் அத்யாயம்  எண்  v0.8. பைதான் மொழி அடிப்படையில் உருவாக்கப்பட்டது.

Ezhil-Lang : (Ezhil, is a fun Tamil programming language for K-12) Ezhil is 
a procedural language with dynamic types, like Ruby/Python. Ezhil has a 
pascal-like syntax, with for-end, while-end, if-elseif-else-end statements,
break, continue and def-end for defining functions. Ezhil language is 
implemented in a handwritten scanner and parser using the Python programming 
language. Latest version of Ezhil-Language is v0.8.

Motivations

(English) ஆங்கிலம் அறியாதவர்கள் கணிப்பொறியை இயக்க உதவும் எழில் உங்களுக்கு முதன்முறையாக நிரல்கள் எழுத உதவும் திறமூல (Open Source) மென்பொருள். (Free) இலவசமாக பயன்படுத்தலாம்

Write Code in Tamil! English language is not a pre-requisite Write your first program in Ezhil Free as in Open source

எழில் மொழியைபயன்படுத்துவது (Usage)

Currently Ezhil language is under development, and a little rough around the edges. You may still try it out, by going to the git source repository,

$ cd ./ezhil-lang/

and then use one of the three modes,

  1. Batch Mode
  2. Interactive Mode
  3. Web Mode

மொத்தமாக எழில் நிரல்களை இயக்க | Batch Mode

$ ezhili ./ezhil_tests/hello.n 
பதிப்பி "வணக்கம்!"
பதிப்பி "எழில் அழைக்கிறது"

வணக்கம்!
எழில் அழைக்கிறது

where you should see the output above. For usage, try,

$ ezhili --help
usage: எழில் [-h] [-debug] [-tamilencoding TAMILENCODING] [-profile] [-stdin]
             [-stacksize STACKSIZE]
             [files [files ...]]

positional arguments:
  files

optional arguments:
  -h, --help            show this help message and exit
  -debug                enable debugging information on screen
  -tamilencoding TAMILENCODING
                        option to specify other file encodings; supported
                        encodings are TSCII, and UTF-8
  -profile              profile the input file(s)
  -stdin                read input from the standard input
  -stacksize STACKSIZE  default stack size for the Interpreter

உரையாடும் பானியில் எழில் |Interactive Mode

$ ezhili
எழில் 1>> 1 + 5
6
எழில் 2>> பதிப்பி "வணக்கம்! எழில் அழைக்கிறது"
வணக்கம்! எழில் அழைக்கிறது
எழில் 3>> exit()

வலை உலாவி வழி பயன்பாடு | Web Mode

You can also run ezhil as a web service by launching the webserver, $ ./webserver.sh and open the webpage, http://localhost:8080 in google-chrome or firefox, to enter your program and evaluate it.

பைதான் மொழியில் இருந்து பயன்படுத்த | Python Library

Ezhil Tamil programming Python package can be invoked from within the Python shell or IDLE on Windows, by simply typing,

>>> import ezhil
>>> ezhil.start()

But to do all of this, you need to build and install the Python packages from this source, by,

$ cd ezhil-lang/ && python setup.py build
$ cd ezhil-lang/ && python setup.py install

Installation from Python Package Index is also recommended, following the commands,

$ pip install ezhil

மேலும் எழில் மொழியிற்கு பங்களிக்க | Learn more, and contribute

'''Rosetta Code''', the wiki platform for sharing standard algorithms, in many programming languages, now hosts several algorithms in Ezhil. You can find all of Ezhil programs there via http://rosettacode.org/wiki/Category:Ezhil

தரவிறக்கம் செய்ய | Download Ezhil

If you would like to tryout the code, all you need is a python interpreter, and the code from https://github.com/arcturusannamalai/Ezhil-Lang/archive/latest.zip

Interesting features include support for recursion, and an interactive interpreter. Ezhil supports a Turtle module for simple on-screen graphics, similar to LOGO language from 1960s.

மேற்கோள்கள் | References

Read Wikipedia article(s) on Ezhil,

  1. (Tamil) http://bit.ly/16MgU6U
  2. (English) http://en.wikipedia.org/wiki/Ezhil_%28programming_language%29

Scholarly articles on Ezhil include,

  1. M. Annamalai, "Ezhil : A Tamil Programming Language," (2009). http://arxiv.org/abs/0907.4960
  2. -do-, "Invitation to Ezhil: A Tamil Programming Language for Early Computer-Science Education," (2013). http://arxiv.org/abs/1308.1733

விருதுகள் | Awards

சுந்தர ராமசாமி நினைவாக காலச்சுவடு அறக்கட்டளையால் நிறுவப்பட்ட‘கணிமை விருது’ 2014 ஆம் ஆண்டு முனைவர் முத்தையா அண்ணாமலைக்கு வழங்கப்பட்டது. அண்ணாமலை அமெரிக்காவில் பாஸ்டன் மாநிலத்தில் வாழ்ந்து வருகிறார். தனது எட்டு ஆண்டு உழைப்பில் ‘எழில்’ என்ற பெயரில் ஒரு கணினி மொழியை உருவாக்கியுள்ளார். ஓர் ஆங்கிலச் சொல் கூட உபயோகிக்காது, தமிழ் மட்டுமே அறிந்தவர்கள்கூட இம்மொழியைப் பயன்படுத்த முடியும். இவ்வகை முயற்சிகள் இதற்குமுன் எடுக்கப்பட்டிருந்தாலும் அவை அதன் அடிப்படையைத் தாண்டி முன்னேறவில்லை என்பதும், இதுவே இவ்வாறாகத் தமிழுக்காக உருவாக்கப்பட்ட முதற் கணினி மொழி என்பதும் குறிப்பிட வேண்டியது. இது இலவசமாகக் கிடைக்கிறது என்பது இதன் சிறப்பம்சம்.

முத்தையாவின் கணிமைச் சேவையைப் பாராட்டி 2014ஆம் ஆண்டுக்கான விருதை முனவர் வெங்கட்ரமணன் வழங்கினார்.

  1. http://www.kalachuvadu.com/issue-187/page71.asp

Development notes

Ezhil project is hosted on Thamizaa project, as well on Ezhil Language Foundation github pages.

ezhil-lang's People

Contributors

arcturusannamalai avatar askalot avatar dependabot[bot] avatar digital-carver avatar gitter-badger avatar kracekumar avatar marathonfail avatar msathia avatar nchokkan avatar sbuvaneshkumar avatar tshrinivasan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ezhil-lang's Issues

after runtime error local variables are trashed;

Ezhil environment should be protected from runtime errors on underlying Python calls

எழில் 16>> y = "fool"
fool
எழில் 17>> printf("%d",y)
(u'failed dispatching function ', u'[BuiltinFunction[printf,nargs=-1]]', u'with exception', u'Run-time error: %d format: a number is required, not unicode')
Exception in code, at line 17,  "printf("%d",y)" 
 >>>>>>> Run-time error: Run-time error: %d format: a number is required, not unicode 
எழில் 18>> y
Exception in code, at line 18,  "y" 
 >>>>>>> Run-time error: Cannot Find Identifier y at Line 19, col 0.  

Type checker for ezhil - rules list

Find a list of rules for type checking Ezhil AST.

  1. You may only add like types. I.e. (You may only add numbers or strings but never between each other)
  2. You may index arrays with only integers or numbers
  3. You can type check argument types, and number of builtin functions.
  4. You may type check arguments for number of args in a function call.

Load definitions from Ezhil file/module 'loadfile' -

Load ezhil code from file using 'loadfile' function.

This task involves writing a builtin function xalled loadfile (Just like "import" in Python)..

This may be used in conjunction with eval(). (both of these are not part of Ezhil as of writing).

The function will load the contents of a file into the current interpreter state.

Demo lisp expression evaluator

You can make a simple expression evaluator in Ezhil for recognizing and evaluating lisp arithmetic expressions.

This is similar to the rpn.n example but more expressive.

The demo will show the ezhil and stack based processing ideas.

koodam எழில் கூடத்தில் உள்ளீடு() மற்றும் turtle() சொயலிகளில் உள்ள எ.கா. நீக்குக

A) உள்ளீடு() மற்றும் turtle() சொயலிகளில் உள்ள எ.கா. நீக்குக

  1. ackermann
  2. age

B) உள்ளீடு() மற்றும் turtle() சொயலிகளில் இயக்கத்தில் பிழை அறிவிப்பு தரவும்
Show error message for these functions from koodam

செயல்பாட்டில் பிழை ஏற்பட்டால் எழில் தொகுப்பி நிரல் குவிப்பை (stack trace) பின்தறவேண்டும்

எழில் நிரல்பாகம் ஒன்றினில் அழைக்கப்படும் செயல்பாட்டில் பிழை ஏற்பட்டால் எழில் தொகுப்பி நிரல் குவிப்பை பின்தறவேண்டும்

eval Ezhil code from within user program

Basic feature was added in 66ca30d under issue #78

eval builtin function should take contents of a string, which is a Ezhil program, and then execute it in current state of the interpreter and return a value.

Errors in code should throw.

Statement evaluation should return None return value.

Expressions evaluation should return the same value.

நிரல் இயக்கியில் நேர ஆலோசனைகளை கணக்கிட நேர தன்விவரக்குறிப்பு

நிரல் இயக்கியில் நேர ஆலோசனைகளை கணக்கிட - நேர தன்விவரக்குறிப்பு

  • நேர முன்குறிப்பு விவரம் - பிரோபைலர் ஒன்றை உருவாக்குக.
    Ref: http://arxiv.org/abs/0810.3468

Language feature - import statement

Develop a new language feature - import statement.
This is similar to Python/Java where code modularization can help software to be better managed.

  1. உள்ளடக்கு, or சேர்க்க sound like good keywords to have.
  2. Alternative implementation can introduce a builtin function instead.

Execute ezhil code from file using 'execfile'

Execute ezhil code from file using 'execfile' function.

This task involves writing a builtin function xalled execfile (Just like in Python)..

This may be thought of as a composition of loadfile() and eval() (both of these are not part of Ezhil as of writing).

The function will load the contents of a file into the current interpreter state.

Then it will execute any contents of the file that are not function declarations.

translate error messages to Tamil

Ideally we move strings to a class static variables like in Ezhil-Lang/blob/master/ezhil/errors.py

Following classes need work,

  1. /Ezhil-Lang/blob/master/ezhil/ezhil_parser.py
  2. /Ezhil-Lang/blob/master/ezhil/ezhil_scanner.py
  3. /Ezhil-Lang/blob/master/ezhil/scanner.py
  4. /Ezhil-Lang/blob/master/ezhil/runtime.py

எழில் இயக்கி AST பொருட்களை பயன்படுத்தக்கூடாது

எழில் இயக்கி AST பொருட்களை பயன்படுத்தக்கூடாது.
பைதனின் இயல்பான பொருள் வகைகளை பயனபபடுத்தினால் இயக்கியின் வேகம், செயல்பாடும் முன்னேர வாய்புள்ளது.

    import ast

Ref: https://greentreesnakes.readthedocs.org/en/latest/

parsing nested if statements has bugs today

'''Some flavors''' of if statements can show errors. We need exhaustive testing for this to validate the current implementation.

e.g. Can you make 2,3,4,5 ... n level nested if-statements and check if they parse and evaluate correctly ?

The following works, but we need more variants like this to be tested in suite;
@( 0 < 1 ) ஆனால்
பதிப்பி "will print 0/1"
@( 0 < 3 ) ஆனால்
பதிப்பி "will print 0/3"
முடி
@( 0 > 3 ) ஆனால்
பதிப்பி "wont print 0/3"
முடி
முடி

நிரல் இயக்கியில் குறைநீக்கல்; தவறு களைதல, பரிசோதனை செய்தல்

நிரல் இயக்கியில் குறைநீக்கல்; தவறு களைதல்

  1. மாறி மதிப்பை காணுதல்
  2. ஏதேனும் நிரல்பாகத்தை செயல்படுத்தல்
  3. ஏதேனும் ஒரு நிரல் வரியில் பரிசோதனை செய்தல்
  4. வரிவரியாக நிரலை இயக்குதல், அல்ல பரிசோதனையை நிருத்துதல்

Accept input in UTF-8, and TSCII encoding

Address some of critiques leveled against Ezhil language (comments by Senthil Raja, et-al in their 2014 INFITT article), we will accept programs written in other encoding like TSCII to demonstrate Ezhil is not limited by encoding.

Our internal encoding will continue to be UTF-8.

Ideally we may support any encoding capable of conversion into Unicode, via the open-tamil library.

FAQs for Ezhil language

Make a FAQs for Ezhil language addressing the basic question of encoding.
Recommend users to pursue the localhost installation.

parse error for while statement within a if statement.

Following code throws a parse error on line 12, when second if-statement cannot be parse correctly.

# demo of a while loop
i = 10

@( True ) ஆனால்
  @( i > 0 ) வரை
     பதிப்பி i
     அச்சிடு("iteration = %d",i)
    i = i  - 1
    @( i > 5 ) ஆனால்
        printf(" i > 5\n");
    @( i == 4 ) இல்லைஆனால்
        printf(" i == 4\n");
     முடி 
   முடி
முடி```

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.