Skip to content

Instantly share code, notes, and snippets.

@humanfactors
Created August 17, 2016 08:02
Show Gist options
  • Save humanfactors/54627ba3d122a8cba107e05eda1a17f4 to your computer and use it in GitHub Desktop.
Save humanfactors/54627ba3d122a8cba107e05eda1a17f4 to your computer and use it in GitHub Desktop.
TYPEOF TASK (57)
{
LABEL="Dot 3a"
TASK_KIND="0"
TYPEOF VARIABLE (53)
{
LABEL="Time1"
TYPE="FLOAT"
VALUE="14.000000" /* This sets the random time between any two given PDTs */
INTERACTIVE_TYPE="VOID"
IS_INITIALIZATION_NEEDED_AT_START="0"
INTERACTIVE_MIN_VALUE="0"
INTERACTIVE_MAX_VALUE="9999"
INTERACTIVE_STEP_VALUE="1"
}
TYPEOF VARIABLE (54)
{
LABEL="X_pos1"
TYPE="FLOAT"
VALUE="23.600000" /* X/Y Pos can be randomised */
INTERACTIVE_TYPE="VOID"
IS_INITIALIZATION_NEEDED_AT_START="0"
INTERACTIVE_MIN_VALUE="0"
INTERACTIVE_MAX_VALUE="9999"
INTERACTIVE_STEP_VALUE="1"
}
TYPEOF VARIABLE (55)
{
LABEL="Y_pos1"
TYPE="FLOAT"
VALUE="54.900000" /* X/Y Pos can be randomised */
INTERACTIVE_TYPE="VOID"
IS_INITIALIZATION_NEEDED_AT_START="0"
INTERACTIVE_MIN_VALUE="0"
INTERACTIVE_MAX_VALUE="9999"
INTERACTIVE_STEP_VALUE="1"
}
TYPEOF TASK (58)
{
LABEL="Task: ISI"
TASK_KIND="0"
TYPEOF RULE (115)
{
LABEL="Rule: Go to subtask after Time1 seconds"
TYPEOF CONDITION (SUPERIOR)
{
IS_EXPANDED="1"
MODIFIER="BECOMES_TRUE"
TYPEOF PARAMETER (OPERAND_1)
{
KIND="FUNCTION"
TYPEOF FUNCTION (GET_TASK_CLOCK)
{
}
OWNER_FILE=""
}
TYPEOF PARAMETER (OPERAND_2)
{
KIND="VARIABLE"
VALUE="53"
OWNER_FILE=""
}
}
TYPEOF ACTION (GOTO_TASK)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (TASK_NUMBER)
{
KIND="ENUM"
VALUE="GOTO_NEXT_TASK"
OWNER_FILE=""
}
}
}
}
TYPEOF TASK (86)
{
LABEL="Task: Image display"
TASK_KIND="0"
TYPEOF RULE (118)
{
IS_EXPANDED="1"
LABEL="Rule: Turn on image"
TYPEOF CONDITION (IS_TASK_BEGINNING)
{
IS_EXPANDED="1"
MODIFIER="BECOMES_TRUE"
}
TYPEOF ACTION (SET_IMAGE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (SCREEN_XPOSITION)
{
KIND="VARIABLE"
VALUE="54"
OWNER_FILE=""
}
TYPEOF PARAMETER (SCREEN_YPOSITION)
{
KIND="VARIABLE"
VALUE="55"
OWNER_FILE=""
}
TYPEOF PARAMETER (SCREEN_PERCENTAGE_WIDTH)
{
KIND="USER"
VALUE="0.70"
OWNER_FILE=""
}
TYPEOF PARAMETER (SCREEN_PERCENTAGE_HEIGHT)
{
KIND="USER"
VALUE="1.3"
OWNER_FILE=""
}
TYPEOF PARAMETER (IMAGE_FILENAME)
{
KIND="FILE"
VALUE="Red dot.png"
OWNER_FILE=""
}
TYPEOF PARAMETER (CHANNEL_NAME)
{
KIND="USER"
VALUE="VISUAL_TRIPLEHEAD:1.1"
OWNER_FILE=""
}
TYPEOF PARAMETER (DISPLAY_TIME)
{
KIND="USER"
VALUE="0"
OWNER_FILE=""
}
}
TYPEOF ACTION (ADD_TO_VARIABLE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (VARIABLE_NAME)
{
KIND="VARIABLE"
VALUE="60"
OWNER_FILE=""
}
TYPEOF PARAMETER (FLOAT_VALUE)
{
KIND="USER"
VALUE="1"
OWNER_FILE=""
}
}
}
TYPEOF RULE (116)
{
LABEL="Rule: Turn off image ("
TYPEOF CONDITION (EQUAL)
{
MODIFIER="BECOMES_TRUE"
TYPEOF PARAMETER (OPERAND_1)
{
KIND="FUNCTION"
TYPEOF FUNCTION (GET_VHL_HORN)
{
TYPEOF PARAMETER (VHL_NUMBER)
{
KIND="VEHICLE"
VALUE="0"
OWNER_FILE=""
}
}
OWNER_FILE=""
}
TYPEOF PARAMETER (OPERAND_2)
{
KIND="USER"
VALUE="1"
OWNER_FILE=""
}
}
TYPEOF ACTION (SET_IMAGE_REMOVE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (IMAGE_FILENAME)
{
KIND="FILE"
VALUE="Red dot.png"
OWNER_FILE=""
}
TYPEOF PARAMETER (CHANNEL_NAME)
{
KIND="USER"
VALUE="VISUAL_TRIPLEHEAD:1.1"
OWNER_FILE=""
}
}
TYPEOF ACTION (ADD_TO_VARIABLE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (VARIABLE_NAME)
{
KIND="VARIABLE"
VALUE="60"
OWNER_FILE=""
}
TYPEOF PARAMETER (FLOAT_VALUE)
{
KIND="USER"
VALUE="-1"
OWNER_FILE=""
}
}
TYPEOF ACTION (GOTO_TASK)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (TASK_NUMBER)
{
KIND="ENUM"
VALUE="GOTO_NEXT_TASK"
OWNER_FILE=""
}
}
}
TYPEOF RULE (117)
{
LABEL="Rule: Turn off image (2s)"
TYPEOF CONDITION (SUPERIOR)
{
MODIFIER="BECOMES_TRUE"
TYPEOF PARAMETER (OPERAND_1)
{
KIND="FUNCTION"
TYPEOF FUNCTION (GET_TASK_CLOCK)
{
}
OWNER_FILE=""
}
TYPEOF PARAMETER (OPERAND_2)
{
KIND="FUNCTION"
TYPEOF FUNCTION (PLUS)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (OPERAND_1)
{
KIND="VARIABLE"
VALUE="53"
OWNER_FILE=""
}
TYPEOF PARAMETER (OPERAND_2)
{
KIND="USER"
VALUE="2"
OWNER_FILE=""
}
}
OWNER_FILE=""
}
}
TYPEOF ACTION (SET_IMAGE_REMOVE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (IMAGE_FILENAME)
{
KIND="FILE"
VALUE="Red dot.png"
OWNER_FILE=""
}
TYPEOF PARAMETER (CHANNEL_NAME)
{
KIND="USER"
VALUE="VISUAL_TRIPLEHEAD:1.1"
OWNER_FILE=""
}
}
TYPEOF ACTION (ADD_TO_VARIABLE)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (VARIABLE_NAME)
{
KIND="VARIABLE"
VALUE="60"
OWNER_FILE=""
}
TYPEOF PARAMETER (FLOAT_VALUE)
{
KIND="USER"
VALUE="-1"
OWNER_FILE=""
}
}
TYPEOF ACTION (GOTO_TASK)
{
IS_EXPANDED="1"
TYPEOF PARAMETER (TASK_NUMBER)
{
KIND="ENUM"
VALUE="GOTO_NEXT_TASK"
OWNER_FILE=""
}
}
}
}
}
@andreabedini
Copy link

andreabedini commented Aug 17, 2016

from parsimonious.grammar import Grammar
grammar = Grammar(r"""
    any = task / data
    task = "TYPEOF " key " (" number ")" newline open_curly any+ close_curly
    data = key "=" quote text quote newline
    open_curly = "{" newline
    close_curly = "}" newline
    key = ~"[A-Z 0-9_]*"
    text = ~"[A-Z0-9 ]*"i
    number = ~"[0-9]*"
    newline = "\n"
    space = " "
    quote = "\""
""")

text = open('example_driving_rule.sci').read()
grammar.parse(text)

PS: doesn't work

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment