Skip to content

Latest commit

 

History

History
199 lines (100 loc) · 4.09 KB

LanguageDesignDraft.mdown

File metadata and controls

199 lines (100 loc) · 4.09 KB

Language Design

Names

variableName -> [a-zA-Z0-9-_]+

functionName -> [a-zA-Z0-9-_]+

numberValue -> -?([0-9]+|[0-9]*(.[0-9]+)?)

stringValue -> "[^"]*"

stringValue -> '[^']*'

stringValue -> `[^\`]*`

booleanValue -> true

booleanValue -> false

Variable Declaration

variableType -> number

variableType -> boolean

variableType -> string

variableTypeProperty -> variableType

variableTypeProperty -> mutable variableType

variableInitialValueProperty -> equal to expression

variableInitialValueProperty -> initialized to expression

variableProperties -> variableTypeProperty

variableProperties -> variableInitialValueProperty

variableProperties -> variableTypeProperty variableInitialValueProperty

variableDeclaration -> Define variable variableName to be variableProperties

Assignment Declaration

assignment -> Set variableName to be expression

increment -> Increase variableName by expression

decrement -> Decrease variableName by expression

Print

print -> Print expression

Control Flow

ifConditionAndStatements -> condition do statements

butIfCondition -> but if ifConditionAndStatements

butIfConditionChain -> butIfCondition butIfConditionChain

butIfConditionChain -> EPSILON

ifCondition -> If ifConditionAndStatements butIfConditionChain End of if

ifCondition -> If ifConditionAndStatements butIfConditionChain Otherwise do statements End of if

whileLoop -> While condition do statements End of while

forLoop -> For variable from expression to expression do statements End of for

Function

Function Declaration

param -> variableName as variableTypeProperty

paramsChain -> param

paramsChain -> param , paramsChain

functionParams -> with param paramsChain

functionParams -> EPSILON

returnType -> that return variableType

returnType -> EPSILON

functionDeclaration -> Define function functionName functionParams _returnType do statementsInFunction End of function

returnStatement -> Return expression

Function Call

argsChain -> EPSILON

argsChain -> expression , argsChain

functionArguments -> EPSILON

functionArguments -> with arg argsChain

returnValueTarget -> EPSILON

returnValueTarget -> then put result into variableName

functionCall -> Call function functionName functionArguments returnValueTarget

Expression

Basic Expression

expression_atom -> variableName

expression_atom -> numberValue

expression_atom -> stringValue

expression_atom -> booleanValue

Comparison Expression

expression -> expression_atom greater than expression

expression -> expression_atom less than expression

expression -> expression_atom greater than or equal to expression

expression -> expression_atom less than or equal to expression

expression -> expression_atom equal to expression

expression -> expression_atom not equal to expression

Logic Expression

expression -> not expression

expression -> expression_atom and expression

expression -> expression_atom or expression

Numeric Expression

expression -> expression_atom plus expression

expression -> expression_atom minus expression

expression -> expression_atom multiply expression

expression -> expression_atom divide expression

expression -> expression_atom modulo expression

Condition alias

condition -> expression

Statements

statement -> variableDeclaration

statement -> assignment

statement -> increment

statement -> decrement

statement -> multiply

statement -> divide

statement -> print

statement -> ifCondition

statement -> whileLoop

statement -> forLoop

statements -> statement statements

statementInFunction -> returnStatement

statementInFunction -> statement

statementsInFunction -> statementInFunction statementsInFunction

Program

program -> functionDeclaration program

program -> statements program

program -> EPSILON