Skip to content

USAGE

Usage

The project provides several independent modules.

Numerals

from multilingualprogramming.numeral.mp_numeral import MPNumeral

num1 = MPNumeral("VII")
num2 = MPNumeral("III")
print(num1 + num2)  # X

Keywords

from multilingualprogramming.keyword.keyword_registry import KeywordRegistry

registry = KeywordRegistry()
print(registry.get_keyword("COND_IF", "fr"))  # si

Date/Time

from multilingualprogramming.datetime.mp_date import MPDate

d = MPDate.from_string("15-Janvier-2024")
print(d.to_string("en"))

Lexer

from multilingualprogramming.lexer.lexer import Lexer

lexer = Lexer("if x > 5:\n    print(x)", language="en")
tokens = lexer.tokenize()
print(tokens)

Execute a Program

from multilingualprogramming import ProgramExecutor

result = ProgramExecutor(language="en").execute("""\
def add(a, b):
    return a + b
print(add(2, 3))
""")

print(result.success)  # True
print(result.output)   # 5

ProgramExecutor enables .ml module imports automatically during execution.

Enable .ml Imports In Plain Python

from multilingualprogramming import enable_multilingual_imports

enable_multilingual_imports()

import my_module  # loads my_module.ml when present on sys.path

Parse and Inspect AST

from multilingualprogramming import Lexer, Parser, ASTPrinter

source = """\
def square(x):
    return x * x
"""

tokens = Lexer(source, language="en").tokenize()
ast = Parser(tokens, source_language="en").parse()
print(ASTPrinter().print(ast))

Run Examples

python -m examples.arithmetic
python -m examples.numeral_extended
python -m examples.keywords
python -m examples.datetime_example
python -m examples.lexer_example
python -m examples.parser_example
python -m examples.ast_example
python -m examples.multilingual_parser_example
python -m examples.codegen_example
python -m examples.multilingual_codegen_example
python -m examples.semantic_example
python -m examples.executor_example