こんにちはプログラミング言語:設計を開始

Hiプログラミング言語の設計を開始していますこれは、なぜそれが必要なのかについての紹介と質問へのいくつかの回答です。しかし、正当な理由もなく、言語設計を真剣に受け止めれば、非常に興味深い作業になります。



学習のための最大のアクセシビリティの理論に従って、他のアルゴリズム言語の広く使用されている要素から、言語のすべての基本的な要素を論理的に統合しようとします。ここでは、最初の記事で示した内部ロジックと、いくつかの人気のある言語のエンティティの構成により、セマンティクスのパーティ違反を自動的に導入するニューラルネットワークに基づく統合マシンが組み込まれているため、少ない労力で新しいコンテンツを簡単に把握できるという仮定に従います。 soobscheni。



すでに知られている要素から新しい言語を構築するというアイデアには長い歴史があります。140年以上前、ザメンホフ博士は他の自然言語の構成要素からエスペラントの人工言語を作成しました。言語は非常に論理的で習得しやすいことが判明したため、実行可能であり、今日まで存続していることが判明しました。たとえば、Google翻訳で利用できます。Saluton Habr!ボンベノンサブラカット!



知的ゲームやパズルの素早いプログラミングに便利な言語を設計してみましょう。その使用はその一貫性と思慮深さに満足します。



コメント



1行のコメントには、記号(Python、R、Ruby)を使用します。//(Cおよび他の多くの言語)の組み合わせを整数除算演算子として使用して、操作の結果を実数として取得できます。この場合、SwiftのようにCGFloat(int)のような少し面倒な変換式を使用しないようにします。



PRINT “Hi world\n”
#  Hi world     


複数行のコメントを強調表示するには、##の組み合わせを使用します。

##   .
,      Python ##


#記号の選択も便利です。将来、Hi言語インタープリターが、コメントテキストから合成できるプログラムテキストのメタタグを処理するために使用するためです。これは、C / C ++のプリプロセッサに少し似ています。ちなみに、これも#記号を使用しています。



基本データタイプ



Basic EditionのHi言語は、次の3つの基本データタイプを使用します。



バイナリ:BOOL

可能な操作:(および)、| (または)、(ではない)

LET true = TRUE 
LET false = FALSE
PRINT true & true   #  TRUE
PRINT true | false   #  TRUE
PRINT ~true   #  FALSE


整数:INT

可能な操作:+-*/(整数除算)、(残り)、//(結果をREALタイプに自動変換する除算)

VAR i = 0
PRINT (i + 6 – 2) * 3 / 5   #  2


実数:REAL

可能な操作:+-*/

VAR pi = 3.1415926535


文字列



文字列はUnicode文字の文字列として扱われるため、複合型です

LET the_force = “flow through you”


文字、特に標準のキーボードにある文字は将来の貴重なリソースであるため、文字列のリテラルには一重引用符を使用しません。

標準の文字列操作:

# 
VAR language = “C”
LET statement  = “ – the best language ever”
LET proposition = language + statement
language = “Python”


今のところ、Characterタイプのデータタイプを導入する必要はありません。実用的な問題を解決するには、...を使用できます。

#    
LET secondSym = language[2]


インデックスによる参照が文字列の外側にある場合の割り当ての結果は「」であり、実行時エラーにはなりません。



定数と変数



上記の例で見たように、Hiは静的に型付けされた言語であり、識別子の使用におけるエラーの可能性を減らし、その目的をよりよく理解します。オブジェクトを最初に使用する前に、定数(LET)と変数(VAR)を宣言する必要があります。初期値を割り当てて特定のタイプを明示的に指定せずにタイプを宣言する方が人間工学的です。この場合、型の推測が明らかになります。

##  
LET one: INT = 1  : ##
LET one = 1
VAR boolean = TRUE


定数と変数のletとvarを宣言するという概念は、Swiftから借用していますが、Hiでは、1つの値を割り当てて複数の宣言を行うことができます。

VAR i, j, k = 0


標準の入力と出力



キーボードからのデータ入力は、INPUTコマンドによって実行されます。

VAR startFrom: INT
PRINT "Start from: "; INPUT startFrom


BOOL値を入力するためにtrueまたはfalseを入力する必要はありません。AppStoreでリリースする準備をしているプログラミング用のモバイルアプリケーションは、この場合、バイナリ選択で2つのボタンのみを表示するのに十分スマートです。同様に、整数を入力するためのピリオドのない数値キーパッドと、テキスト値を入力するための通常のキーボードが表示されます。PRINT



コマンドは、コンソール表示タイプの画面に行を印刷します。デフォルトは40文字の20行です。10 X 20の大きな文字または40X80の小さな文字でモードを選択できます。

PRINT "     Hi language"


こんにちは計算機言語



これで、Hi言語の観点からEBNFの形式でインタラクティブな入出力を備えた計算機の文法を形成するためのすべてが揃いました。

1. The Syntax of HI Programming Language

digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9".
capital = "A" | ... | "Z".
small = "a" | ... | "z".
character = [Unicode_character].
addOperator = "+" | "-" | "|".
mulOperator = "*" | "/" | "//" | "%" | "&".
relation = "==" | "~=" | "<" | "<=" | ">" | ">=".

integer = digit {digit}.
real = digit {digit} "." {digit}.
string = """ {character} """.

number = integer | real.
letter = capital | small.

keyword = capital capital {capital}.
ident = letter {letter | digit}.
type = keyword.

factor = number | string | TRUE | FALSE | ident | "(" expression ")" | "~" factor.
term = factor {mulOperator factor}.
simpleExpression = ["-"] term {addOperator term}.
expression = simpleExpression [relation simpleExpression].
assignment = ident "=" expression.

identList = ident {"," ident}.
expList = expression {"," expression}.
constDeclaration = LET identList [":" type] "=" expression.
varDeclaration = VAR identList [":" type] ["=" expression].
funcCall = keyword [expList ].

statement = assignment | funcCall | constDeclaration | varDeclaration 
statementSequence = statement {("\n" | ";") statement}.

2. Standard Data Types

BOOL	INT	REAL	STRING

3. Standard Procedures and Functions

INPUT	PRINT

4. Other Keywords

LET	VAR


より一般的なクラスの識別子からの例外リストにキーワードが含まれている多くの言語の文法とは異なり、Hi言語インタープリタースキャナーのレベルですでに認識されている特別な種類のトークン-キーワードを導入します。



次の記事では、STRINGに加えてHiの複合データタイプを紹介します。私たちの単純な言語の場合、それらはオブジェクト、配列、および辞書のセットを操作するというアイデアを簡単に表現するのに十分強力です。



All Articles