Skip to content

Programming language created to sketch Football plays and strategies

Notifications You must be signed in to change notification settings

Paulofalcao2002/NFlang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

29 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

NFLang

Programming language created to sketch Football plays and strategies.

To know more about the language see Presentation.pdf. You can also see examples of programs in the examples folder.

Usage

To use the NFLang compiler run:

./nfl <filename>

To recompile the nfl executable run:

./compile.sh

Syntax Diagram

SyntaxDiagram

EBNF

PROGRAM = { STATEMENT };

STATEMENT = ( λ | ASSIGNMENT | CALL | WHEN_CONDITIONAL | DRIVE_LOOP | VARDEC | FUNCTION_DECLARATION | PLAYUNTIL_LOOP), "\n" ;

FUNCTION_STATEMENT = ( λ | ASSIGNMENT | CALL | FUNCTION_WHEN_CONDITIONAL | FUNCTION_DRIVE_LOOP | VARDEC | RESULT | FUNCTION_PLAYUNTIL_LOOP), "\n" ;

BLOCK = "{", { STATEMENT }, "}";
FUNCTION_BLOCK = "{", { FUNCTION_STATEMENT }, "}";

FUNCTION_DECLARATION = "action", TYPE, IDENTIFIER, "(", (λ | FUNCTION_DECLARATION_ARGUMENTS) ")", FUNCTION_BLOCK, "\n";
FUNCTION_DECLARATION_ARGUMENTS = TYPE, IDENTIFIER {",", TYPE, IDENTIFIER};

RESULT = "result", GENERAL_EXPRESSION;

WHEN_CONDITIONAL = "when", BOOLEAN_EXPRESSION, "then", BLOCK, (λ | ("otherwise", BLOCK));
FUNCTION_WHEN_CONDITIONAL = "when", BOOLEAN_EXPRESSION, "then", FUNCTION_BLOCK, (λ | ("otherwise", FUNCTION_BLOCK));

DRIVE_LOOP = "drive", TYPE, IDENTIFIER, "on", "(", BOOLEAN_EXPRESSION, ",", BOOLEAN_EXPRESSION, ")", BLOCK;
FUNCTION_DRIVE_LOOP = "drive", TYPE, IDENTIFIER, "on", "(", BOOLEAN_EXPRESSION, ",", BOOLEAN_EXPRESSION, ")", FUNCTION_BLOCK;

VARDEC = TYPE, IDENTIFIER, (λ | ("is", GENERAL_EXPRESSION));

ASSIGNMENT = IDENTIFIER, ("is", GENERAL_EXPRESSION) | ACTION_CALL_ARGUMENTS | (".", POSITION, "is", BOOLEAN_EXPRESSION) ;
ACTION_CALL_ARGUMENTS = "(", λ | (GENERAL_EXPRESSION, {",", GENERAL_EXPRESSION}) ")";

CALL = "call", "(", BOOLEAN_EXPRESSION, ")" ;
PLAYUNTIL_LOOP = "playuntil", BOOLEAN_EXPRESSION, BLOCK;

GENERAL_EXPRESSION = PLAY_EXPRESSION | BOOLEAN_EXPRESSION;

PLAY_EXPRESSION = "{", λ | (PLAY_DEFINITION, {",", PLAY_DEFINITION}), "}";
PLAY_DEFINITION = POSITION, ":", BOOLEAN_EXPRESSION;

BOOLEAN_EXPRESSION = BOOLEAN_TERM, {"or", BOOLEAN_TERM}; 
BOOLEAN_TERM = RELATIVE_EXPRESSION, {"and", RELATIVE_EXPRESSION}; 
RELATIVE_EXPRESSION = EXPRESSION, {("equals" | ">" | "<"), EXPRESSION}; 

EXPRESSION = TERM, { ("+" | "-"), TERM } ;
TERM = FACTOR, { ("*" | "/"), FACTOR } ;
FACTOR = (("+" | "-" | "not", ">>"), FACTOR) | NUMBER | STRING | DOWN | ("(", BOOLEAN_EXPRESSION, ")") | IDENTIFIER, (λ | ACTION_CALL_ARGUMENTS | (".", POSITION))  | ("signal", "(", ")") ;

IDENTIFIER = LETTER, { LETTER | DIGIT | "_" } ;
TYPE = "athlete" | "play" | "number" | "down" | "empty";
DOWN = "firstdown" | "seconddown" | "thirddown" | "fourthdown" | "toondowns";
POSITION = "QB" | "WR" | "TE" | "RB" | "FB" | "OL" | "DL" | "LB" | "CB" | "S" | "K" | "P";


STRING = """, { LETTER }, """;
NUMBER = DIGIT, { DIGIT } ;
LETTER = ( a | ... | z | A | ... | Z ) ;
DIGIT = ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 0 ) ;

About

Programming language created to sketch Football plays and strategies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published