Page 1 of 2

EBNF : De oplossing

Posted: Tue Oct 11, 2005 4:59 pm
by Arawn
EBNF Visualizer

Intro
This program visualizes EBNF (Extended Backus Naur Form) grammar rules as syntax diagrams. A text file with the suffix .ebnf is required, which contains grammar rules written in EBNF. The program parses the rules, visualizes them in form of syntax diagrams and is able to generate .gif files for further use (e.g. in Word or on Web pages). Furthermore the program allows users to manipulate the look and the layout of the generated syntax diagrams.
Screenshot
Image

Download

Code: Select all

http://dotnet.jku.at/applications/Visualizer/EBNF-Visualizer.exe
ENJOY!

*Note:

Ik zou persoonlijk alle oplossingen op de pc maken met de visualizer maar daarna overtekenen op papier, zodat het niet zou opvallen


ALL HAIL ME! :twisted:
(en de kerel die het mij verteld heeft, maar waarvan ik de naam niet weet)

Re: EBNF : De oplossing

Posted: Tue Oct 11, 2005 5:15 pm
by j0lle
Arawn wrote:EBNF Visualizer

(en de kerel die het mij verteld heeft, maar waarvan ik de naam niet weet)
sammy (of sam?)
jaja pwnij :-)

Posted: Tue Oct 11, 2005 5:22 pm
by Arawn
Kem wa liggen kloten dermee en tis dus best simpel om te gebruiken

zij die het niet lukt even snel een tutorial:

Maak een txt file aan
Hernoemen naar .ebnf
schrijf in de ebnf file de EBNF code

Code: Select all

vb: Module = MODULE ident ";" [ImportList] DeclSeq [BEGIN StatementSeq] END ident ".". 
=> Opgepast: altijd endigen met een punt! (zodat program weet wanneer het gedaan is)

Open EBNF Visualizer
File -> Load Grammar
Selecteer uw .ebnf filetje
Rules -> Selecteer de naam van het ding da ge hebt ingegeven in de .ebnf file

Posted: Tue Oct 11, 2005 5:40 pm
by Arawn
En voor de echte lamzakken:

Kheb die code's ingescand en in tekst omgezet zoda ge enkel moet copy pasten!

Code: Select all

Module = MODULE ident ";" [ImportList] DeclSeq [BEGIN
StatementSeq] END ident ".".
ImportList = IMPORT [ident ":_"] ident {"," [ident ":_"]
ident} ";".
DeclSeq = {CONST -[ConstDecl ";" } I TYPE {TypeDecl ";"}
I VAR {VarDecl ";"}} {ProcDecl ";" I ForwardDecl ";"}. ConstDecl = IdentDef	ConstExpr.
TypeDecl = IdentDef	Type.
VarDecl = IdentList	Type.
ProcDecl = PROCEDURE [Receiver] IdentDef [FormalPars]
";" DeclSeq [BEGIN StatementSeq] END ident.

ForwardDecl = PROCEDURE "-" [Receiver] IdentDef
[FormalPars].
FormalPars = "(" [FPSection {";" FPSection}] ")"
[":" Qualident].
FPSection = [VAR] ident {"," ident} ":" Type. Receiver = "(" [VAR] ident ":" ident ")". Type = Qualident
I ARRAY [ConstExpr {"," ConstExpr}] OF Type
I RECORD ["("Qualident")"] FieldList {";" FieldList} END
I POINTER TO Type
I PROCEDURE [FormalPars].
FieldList = [IdentList ":" Type]. StatementSeq = Statement {";" Statement}. Statement = [ Designator	Expr
I Designator ["(" [ExprList] ")"]
I IF Expr THEN StatementSeq {ELSIF Expr THEN StatementSeq}
[ELSE StatementSeq] END
I CASE Expr OF Case {"I" Case} [ELSE StatementSeq] END
I WHILE Expr DO StatementSeq END
I REPEAT StatementSeq UNTIL Expr
I FOR ident ":=" Expr TO Expr [BY ConstExpr] DO
StatementSeq END
I LOOP StatementSeq END
I WITH Guard DO StatementSeq {"I" Guard DO StatementSeq}

[ELSE StatementSeq] END I EXIT
I RETURN [Expr] ].
Case = [CaseLabels {"," CaseLabels} ":" StatementSeq]. CaseLabels = ConstExpr [".." ConstExpr]. Guard = Qualident ":" Qualident. ConstExpr = Expr.
Expr = SimpleExpr [Relation SimpleExpr]. SimpleExpr = ["+" I "-"] Term {AddDp Term}. Term = Factor {MulOp Factor}.
Factor = Designator ["(" [ExprList] ")"] I number
I character) string I NIL I Set I "(" Expr ")"
I "'" Factor.
Set = "{" [Element {"," Element}] "}".
Element = Expr [".." Expr].
Relation	I "<" I "<_" I ">" I ">_" I IN I IS. AddOp =	OR.
MulOp =	DIV I MOD	"&".
Designator = Qualident {"." ident I "[" ExprList "I"
I "'"I "(" Qualident ")"}.
ExprList = Expr {"," Expr}. IdentList = IdentDef {"," IdentDef}. Qualident = [ident "."] ident. IdentDef = ident [" *	I "-"]ident = letter {letter I digit}.
letter = "a" I "b" I "c" I "d"	"e" I "f" I "g" I "Y
I	"illI	"j"	I	..k..	I	..1..	I	..m..	I	..n..	I	..o..	I	..p..	I	"q"
I	..r..	I	,.S..I	..t..	I	..u..	I	..V..	I	"W"	I	,.x..	I	..y..	I	"z"
"A" I "B" I "C" I "D" I "E" I 'Fl'	"Gil	"Hip
I	..I.. I	"J"	I	..K..	I	..L..	I	..M..	I	"N"	I	..D..	I	..p..	I	..Q"
I	"R"	I	..S..I	"T"	I	..U..	I	"V"	I	..W..	I	..X..	I	..y..	I	"z"
digit = "Oil 1	11111	11211	11311	114"	11511	"611	"711
I "s" I "9"
number = integer I real.
integer = digit {digit} I digit {hexDigit} "H". real = digit {digit} "." {digit} [ScaleFactor]. ScaleFactor = ("E" I "D") ["+" I "-"] digit {digit}. hexDigit = digit I "A"	"B" I "C" I "D" I "E" I "F". character = digit {hexDigit} "X".
string = '	' {char}	{char}	"

Posted: Tue Oct 11, 2005 5:41 pm
by WiDeCr0w
hmm.. beetje heel handig?

Posted: Tue Oct 11, 2005 5:46 pm
by Arawn
Wel opletten af en toe pakt een een character verkeerd dus ik zou eens dubbel checken me uw cursus erbij!

Posted: Sat Oct 15, 2005 4:31 pm
by Nickman
Lol, heel da stuk van letter is fout :D.
Met welk prog hebde da laten scannen?

En voor een of andere reden wilt die EBNF visualizer ni openen :D

Posted: Thu Nov 03, 2005 10:36 pm
by Krikke
niemand te laat? :mrgreen:

Posted: Thu Nov 03, 2005 10:49 pm
by Norfolk
Moest da al binnen zijn? :shock:









Nene, heb ingediend :D

Posted: Thu Nov 03, 2005 11:01 pm
by j0lle
rofl :p
gisterenacht e :)
eeft er al iemand punte? :p

Posted: Thu Nov 03, 2005 11:50 pm
by EagleEye812
ik heb ! out of 0.0

:roll: :p

Posted: Fri Nov 04, 2005 5:46 pm
by Shinta
EagleEye812 wrote:ik heb ! out of 0.0

:roll: :p
ik ok tot nu toe :wink:

Posted: Fri Nov 04, 2005 6:00 pm
by Norfolk
zou hij die nu al verbeterd hebben? :mrgreen:

Posted: Sat Nov 05, 2005 5:46 pm
by Yo_rik
Norfolk wrote:zou hij die nu al verbeterd hebben? :mrgreen:
:lol: Ik denk van niet:
F. Arickx wrote:Portfolio evaluatie
– Uit de portfolio wordt een opdracht geselecteerd ter evaluatie
– Draagt ±2.5/20 bij voor de globale evaluatie van het vak
:shock: er wordt dus maar een opdracht verbeterd en waarschijnlijk besproken op het mondeling examen

Posted: Sat Nov 05, 2005 6:33 pm
by Arawn
das heel de clue van da ding, waarschijnlijk heeft da geen nut...

Enkel voor uzelf om te controleren of ge "proper" programmeert
En wa is de kans da ge geëvalueerd wordt op een stel tekeningeskes? :roll: